浏览代码

soundasset augments: get<name>Profile methods, test for emptystring, initialize asset arrays
lightning provides a conversion sample (attempt. it's still yelling)

AzaezelX 4 年之前
父节点
当前提交
dba0899887
共有 3 个文件被更改,包括 21 次插入22 次删除
  1. 15 0
      Engine/source/T3D/assets/SoundAsset.h
  2. 6 6
      Engine/source/T3D/fx/lightning.cpp
  3. 0 16
      Engine/source/T3D/fx/lightning.h

+ 15 - 0
Engine/source/T3D/assets/SoundAsset.h

@@ -262,6 +262,12 @@ public: \
    Resource<SFXResource> get##name##Resource() \
    {\
       return m##name;\
+   }\
+   SFXProfile* get##name##Profile()\
+   {\
+      if (get##name() != StringTable->EmptyString() && m##name##Asset.notNull())\
+         return m##name##Asset->getSfxProfile();\
+      return NULL;\
    }
 
 #define DECLARE_SOUNDASSET_SETGET(className, name)\
@@ -436,6 +442,8 @@ public: \
       {\
          m##name[index] = NULL;\
       }\
+      if(get##name(index) == StringTable->EmptyString())\
+         return true;\
       \
       if (m##name##Asset[index].notNull() && m##name##Asset[index]->getStatus() != SoundAsset::Ok)\
       {\
@@ -466,6 +474,12 @@ public: \
       if(id >= sm##name##Count || id < 0)\
          return ResourceManager::get().load( "" );\
       return m##name[id];\
+   }\
+   SFXProfile* get##name##Profile(const U32& id)\
+   {\
+      if (get##name(id) != StringTable->EmptyString() && m##name##Asset[id].notNull())\
+         return m##name##Asset[id]->getSfxProfile();\
+      return NULL;\
    }
 
 #define DECLARE_SOUNDASSET_ARRAY_SETGET(className, name)\
@@ -517,6 +531,7 @@ DefineEngineMethod(className, set##name, bool, (const char* map, S32 index), , a
    m##name##Name[index] = StringTable->EmptyString(); \
    m##name##AssetId[index] = StringTable->EmptyString(); \
    m##name##Asset[index] = NULL;\
+   m##name[index] = NULL;\
 }
 
 #ifdef TORQUE_SHOW_LEGACY_FILE_FIELDS

+ 6 - 6
Engine/source/T3D/fx/lightning.cpp

@@ -302,11 +302,11 @@ bool LightningData::preload(bool server, String &errorStr)
       }
 
       for (U32 j = 0; j < MaxThunders; j++) {
-         if (!getThunderProfile(j))
+         if (!getThunderSoundProfile(j))
             Con::errorf(ConsoleLogEntry::General, "LightningData::preload: Cant get an sfxProfile for thunder.");
       }
 
-      if(!getSFXProfile())
+      if(!getStrikeSoundProfile())
          Con::errorf(ConsoleLogEntry::General, "LightningData::preload: can't get sfxProfile from asset");
 
       mNumStrikeTextures = 0;
@@ -584,7 +584,7 @@ void Lightning::scheduleThunder(Strike* newStrike)
          if (t <= 0.03f) {
             // If it's really close, just play it...
             U32 thunder = sgLightningRand.randI(0, mDataBlock->numThunders - 1);
-            SFX->playOnce(mDataBlock->getThunderProfile(thunder));
+            SFX->playOnce(mDataBlock->getThunderSoundProfile(thunder));
          } else {
             Thunder* pThunder = new Thunder;
             pThunder->tRemaining = t;
@@ -651,7 +651,7 @@ void Lightning::advanceTime(F32 dt)
 
          // Play the sound...
          U32 thunder = sgLightningRand.randI(0, mDataBlock->numThunders - 1);
-         SFX->playOnce(mDataBlock->getThunderProfile(thunder));
+         SFX->playOnce(mDataBlock->getThunderSoundProfile(thunder));
       } else {
          pThunderWalker = &((*pThunderWalker)->next);
       }
@@ -735,9 +735,9 @@ void Lightning::processEvent(LightningStrikeEvent* pEvent)
       MatrixF trans(true);
       trans.setPosition( strikePoint );
 
-      if (mDataBlock->getSFXProfile())
+      if (mDataBlock->getStrikeSoundProfile())
       {
-         SFX->playOnce(mDataBlock->getSFXProfile(), &trans );
+         SFX->playOnce(mDataBlock->getStrikeSoundProfile(), &trans );
       }
 
 }

+ 0 - 16
Engine/source/T3D/fx/lightning.h

@@ -92,22 +92,6 @@ class LightningData : public GameBaseData
 
    DECLARE_CONOBJECT(LightningData);
    static void initPersistFields();
-
-   SFXProfile* getThunderProfile(U32 id)
-   {
-      if (mThunderSoundAsset[id] != NULL)
-         return mThunderSoundAsset[id]->getSfxProfile();
-
-      return NULL;
-   }
-
-   SFXProfile* getSFXProfile() {
-      if (mStrikeSoundAsset.notNull())
-         return mStrikeSoundAsset->getSfxProfile();
-
-      return NULL;
-   }
-
 };