guiAudiocCtrl fixes

ditch description: not needed.
set process ticking off when the gui element is put to sleep
for the case of re-use of 3d sounds, set emission to the listener position
This commit is contained in:
AzaezelX 2024-08-05 17:51:17 -05:00
parent cfe76944e7
commit 9b5f137f77
2 changed files with 16 additions and 27 deletions

View file

@ -43,42 +43,38 @@ GuiAudioCtrl::GuiAudioCtrl()
mTickPeriodMS = 100; mTickPeriodMS = 100;
mLastThink = 0; mLastThink = 0;
mCurrTick = 0; mCurrTick = 0;
mPlayIf = "";
mSoundPlaying = NULL; mSoundPlaying = NULL;
mUseTrackDescriptionOnly = false; mUseTrackDescriptionOnly = false;
mDescription.mIs3D = false;
mDescription.mIsLooping = true;
mDescription.mIsStreaming = false;
mDescription.mFadeInTime = -1.f;
mDescription.mFadeOutTime = -1.f;
mVolume = 1; mVolume = 1;
mPitch = 1; mPitch = 1;
mFadeInTime = -1; mFadeInTime = -1;
mFadeOutTime = -1; mFadeOutTime = -1;
mSourceGroup = NULL; mSourceGroup = NULL;
setProcessTicks();
} }
GuiAudioCtrl::~GuiAudioCtrl() GuiAudioCtrl::~GuiAudioCtrl()
{ {
if (mSoundPlaying)
mSoundPlaying->stop();
SFX_DELETE(mSoundPlaying); SFX_DELETE(mSoundPlaying);
} }
bool GuiAudioCtrl::onWake() bool GuiAudioCtrl::onWake()
{ {
return Parent::onWake(); bool awake = Parent::onWake();
setProcessTicks();
_update();
return awake;
} }
void GuiAudioCtrl::onSleep() void GuiAudioCtrl::onSleep()
{ {
if (mSoundPlaying)
mSoundPlaying->stop();
SFX_DELETE(mSoundPlaying);
Parent::onSleep(); Parent::onSleep();
_update();
}
void GuiAudioCtrl::onRemove()
{
Parent::onRemove();
} }
void GuiAudioCtrl::processTick() void GuiAudioCtrl::processTick()
@ -154,22 +150,13 @@ void GuiAudioCtrl::initPersistFields()
void GuiAudioCtrl::_update() void GuiAudioCtrl::_update()
{ {
if (isSoundValid())
{
//mLocalProfile = *mSoundAsset->getSfxProfile();
mDescription = *mSoundAsset->getSfxDescription();
}
// Make sure all the settings are valid.
mDescription.validate();
bool useTrackDescriptionOnly = (mUseTrackDescriptionOnly && getSoundProfile()); bool useTrackDescriptionOnly = (mUseTrackDescriptionOnly && getSoundProfile());
if (getSoundProfile()) if (getSoundProfile())
{ {
if (mSoundPlaying == NULL) if (mSoundPlaying == NULL)
{ {
mSoundPlaying = SFX->createSource(getSoundProfile()); mSoundPlaying = SFX->createSource(getSoundProfile(), &(SFX->getListener().getTransform()));
} }
} }
@ -193,9 +180,9 @@ void GuiAudioCtrl::_update()
} }
if (testCondition() && isActive() && isAwake()) if (isAwake())
{ {
if (mSoundPlaying && !mSoundPlaying->isPlaying()) if (testCondition() && mSoundPlaying && !mSoundPlaying->isPlaying())
{ {
mSoundPlaying->play(); mSoundPlaying->play();
} }
@ -205,6 +192,8 @@ void GuiAudioCtrl::_update()
if (mSoundPlaying != NULL) if (mSoundPlaying != NULL)
{ {
mSoundPlaying->stop(); mSoundPlaying->stop();
SFX_DELETE(mSoundPlaying);
setProcessTicks(false);
} }
} }
} }

View file

@ -72,7 +72,6 @@ protected:
bool mUseTrackDescriptionOnly; bool mUseTrackDescriptionOnly;
/// The description and variant values used by the local profile. /// The description and variant values used by the local profile.
SFXDescription mDescription;
SFXSource* mSourceGroup; SFXSource* mSourceGroup;
F32 mVolume; F32 mVolume;
F32 mPitch; F32 mPitch;
@ -91,6 +90,7 @@ public:
// GuiControl. // GuiControl.
bool onWake() override; bool onWake() override;
void onSleep() override; void onSleep() override;
void onRemove() override;
void setActive(bool value) override {}; void setActive(bool value) override {};
bool testCondition(); bool testCondition();
static void initPersistFields(); static void initPersistFields();