Преглед изворни кода

Checks for emptyString in preload
Sound asset out for emptyString

marauder2k7 пре 4 година
родитељ
комит
76addc52eb

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

@@ -235,6 +235,8 @@ public: \
          m##name = NULL;\
       }\
       \
+      if(get##name() == StringTable->EmptyString())\
+         return true;\
       if (m##name##Asset.notNull() && m##name##Asset->getStatus() != SoundAsset::Ok)\
       {\
          Con::errorf("%s(%s)::_set%s() - sound asset failure\"%s\" due to [%s]", macroText(className), getName(), macroText(name), _in, SoundAsset::getAssetErrstrn(m##name##Asset->getStatus()).c_str());\

+ 9 - 1
Engine/source/T3D/fx/explosion.cpp

@@ -864,7 +864,15 @@ bool ExplosionData::preload(bool server, String &errorStr)
 
    if( !server )
    {
-      String sfxErrorStr;
+
+      if (getSound() != StringTable->EmptyString())
+      {
+         _setSound(getSound());
+
+         if (!getSoundProfile())
+            Con::errorf(ConsoleLogEntry::General, "SplashData::preload: Cant get an sfxProfile for splash.");
+      }
+
       if (!particleEmitter && particleEmitterId != 0)
          if (Sim::findObject(particleEmitterId, particleEmitter) == false)
             Con::errorf(ConsoleLogEntry::General, "Error, unable to load particle emitter for explosion datablock");

+ 8 - 3
Engine/source/T3D/fx/lightning.cpp

@@ -296,7 +296,7 @@ bool LightningData::preload(bool server, String &errorStr)
    {
       for (S32 i = 0; i < MaxThunders; i++)
       {
-         if (getThunderSound(i))
+         if (getThunderSound(i) != StringTable->EmptyString())
          {
             _setThunderSound(getThunderSound(i), i);
             Con::printf("Thunder sound: %d %s", i, getThunderSound(i));
@@ -308,8 +308,13 @@ bool LightningData::preload(bool server, String &errorStr)
 
       }
 
-      if(getStrikeSound() && !getStrikeSoundProfile())
-         Con::errorf(ConsoleLogEntry::General, "LightningData::preload: can't get sfxProfile from asset");
+      if (getStrikeSound() != StringTable->EmptyString())
+      {
+         _setStrikeSound(getStrikeSound());
+
+         if(!getStrikeSoundProfile())
+            Con::errorf(ConsoleLogEntry::General, "LightningData::preload: can't get sfxProfile from strike sound.");
+      }
 
       mNumStrikeTextures = 0;
       for (U32 k = 0; k < MaxTextures; k++) 

+ 9 - 2
Engine/source/T3D/fx/precipitation.cpp

@@ -188,9 +188,16 @@ bool PrecipitationData::preload( bool server, String &errorStr )
 {
    if( Parent::preload( server, errorStr) == false)
       return false;
+   if (!server)
+   {
+      if (getSound() != StringTable->EmptyString())
+      {
+         _setSound(getSound());
 
-   if (!server && !getSoundProfile())
-      return false;
+         if (!getSoundProfile())
+            Con::errorf(ConsoleLogEntry::General, "SplashData::preload: Cant get an sfxProfile for splash.");
+      }
+   }
 
    return true;
 }

+ 9 - 3
Engine/source/T3D/fx/splash.cpp

@@ -276,11 +276,17 @@ bool SplashData::preload(bool server, String &errorStr)
    if (Parent::preload(server, errorStr) == false)
       return false;
 
-   if (!server && !getSoundProfile())
-      return false;
-
    if (!server)
    {
+
+      if (getSound() != StringTable->EmptyString())
+      {
+         _setSound(getSound());
+
+         if(!getSoundProfile())
+            Con::errorf(ConsoleLogEntry::General, "SplashData::preload: Cant get an sfxProfile for splash.");
+      }
+
       S32 i;
       for( i=0; i<NUM_EMITTERS; i++ )
       {

+ 7 - 2
Engine/source/T3D/projectile.cpp

@@ -367,8 +367,13 @@ bool ProjectileData::preload(bool server, String &errorStr)
          if (Sim::findObject(decalId, decal) == false)
             Con::errorf(ConsoleLogEntry::General, "ProjectileData::preload: Invalid packet, bad datablockId(decal): %d", decalId);
 
-      if( !getProjectileSound() )
-         Con::errorf(ConsoleLogEntry::General, "ProjectileData::preload: Invalid asset");
+      if (getProjectileSound() != StringTable->EmptyString())
+      {
+         _setProjectileSound(getProjectileSound());
+
+         if (!getProjectileSoundProfile())
+            Con::errorf(ConsoleLogEntry::General, "SplashData::preload: Cant get an sfxProfile for splash.");
+      }
 
       if (!lightDesc && lightDescId != 0)
          if (Sim::findObject(lightDescId, lightDesc) == false)