瀏覽代碼

Merge pull request #1302 from Azaezel/alpha41/guiAudioCtrlFixes

guiAudiocCtrl fixes
Brian Roberts 1 年之前
父節點
當前提交
35e50b54b9

+ 15 - 26
Engine/source/gui/shiny/guiAudioCtrl.cpp

@@ -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);
       }
    }
 }

+ 1 - 1
Engine/source/gui/shiny/guiAudioCtrl.h

@@ -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();

+ 2 - 0
Templates/BaseGame/game/core/gui/scripts/profiles.tscript

@@ -79,6 +79,8 @@ new GuiControlProfile (GuiDefaultProfile)
    returnTab = false;
    numbersOnly = false;
    cursorColor = "0 0 0 255";
+   soundButtonDownAsset = "Core_GUI:buttonClick";
+   soundButtonOverAsset = "Core_GUI:buttonHover";
 };
 
 if(!isObject(GuiNonModalDefaultProfile))

+ 10 - 0
Templates/BaseGame/game/core/gui/sounds/buttonClick.asset.taml

@@ -0,0 +1,10 @@
+<SoundAsset
+    AssetName="buttonClick"
+    sourceGroup="AudioChannelDefault"
+    MaxDistance="100">
+    <SoundAsset.slots>
+        <slots_beginarray
+            SoundFile="@assetFile=buttonClick.wav"
+            MaxDistance="100"/>
+    </SoundAsset.slots>
+</SoundAsset>

二進制
Templates/BaseGame/game/core/gui/sounds/buttonClick.wav


+ 10 - 0
Templates/BaseGame/game/core/gui/sounds/buttonHover.asset.taml

@@ -0,0 +1,10 @@
+<SoundAsset
+    AssetName="buttonHover"
+    sourceGroup="AudioChannelDefault"
+    MaxDistance="100">
+    <SoundAsset.slots>
+        <slots_beginarray
+            SoundFile="@assetFile=buttonHover.wav"
+            MaxDistance="100"/>
+    </SoundAsset.slots>
+</SoundAsset>

二進制
Templates/BaseGame/game/core/gui/sounds/buttonHover.wav