Sfx playlist asset working (#1109)

* GroundWork

-Reverted SFXPlaylist since it is going to be made from an asset now instead.
-Added extra options to soundAssets description.
-SFXPlaylist may need an onAdd function

* Update sfxController.cpp

* SFXPlaylist data

-Added sfxPlaylist init persist fields for the slots to sound asset
-Added logic to fil sfxPlaylist if more than 1 slot is filled

* Update SoundAsset.cpp

to stop git ci complaining, assetImporter........

* Update SoundAsset.h

* sfxPlaylist

-Fix: incomplete type error
-Added onAdd and onRemove to playlist
-SoundAsset getProfile define now returns playlist if the asset is a playlist.

* Update SoundAsset.h

-updated asset array to return playlist or profile depending on what the asset is

* SFXPlaylist working

-SFXPlaylist works
AudioChannelDefault gets its volume set to 0 for some reason and was throwing off making sfxPlaylist inaudible.

Still an exception when closing if using a playlist trips on line 355 of sfxSound

* Update sfxSound.h

* setSoundFile index null fix

* Update SoundAsset.h

* Update SoundAsset.h

* netstream safety in case of a null asset assignment

* Update sfxController.cpp

added safeties around a null playlist trying to play.

* Update with Az's asset err code changes

---------

Co-authored-by: AzaezelX <quillus@hotmail.com>
This commit is contained in:
marauder2k7 2023-10-21 23:19:02 +01:00 committed by GitHub
parent 845defb25d
commit 852ed8f225
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
14 changed files with 550 additions and 245 deletions

View file

@ -167,7 +167,7 @@ void SFXController::_compileList( SFXPlayList* playList )
// If there's no track in this slot, ignore it.
if( !playList->getTrackProfile(slotIndex))
if( !playList->getSlots().mTrack[slotIndex])
continue;
// If this is a looped slot and the list is not set to loop
@ -394,7 +394,13 @@ bool SFXController::_execInsn()
case OP_Play:
{
SFXPlayList* playList = getPlayList();
SFXTrack* track = playList->getTrackProfile(insn.mSlotIndex);
if (playList == NULL)
{
endUpdate = true;
break;
}
SFXTrack* track = playList->getSlots().mTrack[insn.mSlotIndex];
// Handle existing sources playing on this slot and find
// whether we need to start a new source.
@ -817,6 +823,9 @@ void SFXController::_update()
SFXPlayList* playList = getPlayList();
if (!playList)
Parent::stop();
// Check all sources against the current state setup and
// take appropriate actions.