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;
mLastThink = 0;
mCurrTick = 0;
mPlayIf = "";
mSoundPlaying = NULL;
mUseTrackDescriptionOnly = false;
mDescription.mIs3D = false;
mDescription.mIsLooping = true;
mDescription.mIsStreaming = false;
mDescription.mFadeInTime = -1.f;
mDescription.mFadeOutTime = -1.f;
mVolume = 1;
mPitch = 1;
mFadeInTime = -1;
mFadeOutTime = -1;
mSourceGroup = NULL;
setProcessTicks();
}
GuiAudioCtrl::~GuiAudioCtrl()
{
if (mSoundPlaying)
mSoundPlaying->stop();
SFX_DELETE(mSoundPlaying);
}
bool GuiAudioCtrl::onWake()
{
return Parent::onWake();
bool awake = Parent::onWake();
setProcessTicks();
_update();
return awake;
}
void GuiAudioCtrl::onSleep()
{
if (mSoundPlaying)
mSoundPlaying->stop();
SFX_DELETE(mSoundPlaying);
Parent::onSleep();
_update();
}
void GuiAudioCtrl::onRemove()
{
Parent::onRemove();
}
void GuiAudioCtrl::processTick()
@ -154,22 +150,13 @@ void GuiAudioCtrl::initPersistFields()
void GuiAudioCtrl::_update()
{
if (isSoundValid())
{
//mLocalProfile = *mSoundAsset->getSfxProfile();
mDescription = *mSoundAsset->getSfxDescription();
}
// Make sure all the settings are valid.
mDescription.validate();
bool useTrackDescriptionOnly = (mUseTrackDescriptionOnly && getSoundProfile());
if (getSoundProfile())
{
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();
}
@ -205,6 +192,8 @@ void GuiAudioCtrl::_update()
if (mSoundPlaying != NULL)
{
mSoundPlaying->stop();
SFX_DELETE(mSoundPlaying);
setProcessTicks(false);
}
}
}

View file

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