瀏覽代碼

Merge pull request #1518 from Azaezel/alpha41/preLoad3

shapes are optional for projectiles. not mandatory.
Brian Roberts 2 月之前
父節點
當前提交
8ffe96a9a8

+ 0 - 1
Engine/source/T3D/assets/ShapeAsset.cpp

@@ -368,7 +368,6 @@ U32 ShapeAsset::load()
 
    if (!mShape)
    {
-      Con::errorf("ShapeAsset::loadShape : failed to load shape file %s (%s)!", getAssetName(), mShapeFile);
       mLoadedState = BadFileReference;
       return mLoadedState; //if it failed to load, bail out
    }

+ 4 - 6
Engine/source/T3D/debris.cpp

@@ -276,12 +276,10 @@ bool DebrisData::preload(bool server, String &errorStr)
 
    if (getShape())
    {
-      {
-         TSShapeInstance* pDummy = new TSShapeInstance(getShape(), !server);
-         delete pDummy;
-         if (!server && !getShape()->preloadMaterialList(getShapeFile()) && NetConnection::filesWereDownloaded())
-            return false;
-      }
+      TSShapeInstance* pDummy = new TSShapeInstance(getShape(), !server);
+      delete pDummy;
+      if (!server && !getShape()->preloadMaterialList(getShapeFile()) && NetConnection::filesWereDownloaded())
+         return false;
    }
    else if (!mShapeAsset.isNull())
    {

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

@@ -905,7 +905,13 @@ bool ExplosionData::preload(bool server, String &errorStr)
       TSShapeInstance* pDummy = new TSShapeInstance(getExplosionShape(), !server);
       delete pDummy;
 
-   } else {
+   }
+   else if (mExplosionShapeAsset.notNull())
+   {
+      errorStr = String::ToString("ExplosionData::preload: Couldn't load shape \"%s\"", _getExplosionShapeAssetId());
+      return false;
+   }
+   else {
       explosionAnimation = -1;
    }
 

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

@@ -389,9 +389,9 @@ bool ProjectileData::preload(bool server, String &errorStr)
       TSShapeInstance* pDummy = new TSShapeInstance(getProjectileShape(), !server);
       delete pDummy;
    }
-   else
+   else if (mProjectileShapeAsset.notNull())
    {
-      errorStr = String::ToString("ProjectileData::load: Couldn't load shape \"%s\"", _getProjectileShapeAssetId());
+      errorStr = String::ToString("ProjectileData::preload: Couldn't load shape \"%s\"", _getProjectileShapeAssetId());
       return false;
    }
 

+ 2 - 0
Engine/source/T3D/shapeBase.cpp

@@ -499,6 +499,8 @@ bool ShapeBaseData::preload(bool server, String &errorStr)
             }
          }
       }
+      else
+         Con::errorf("ShapeBaseData::preload -%s failed: %s", mShapeAsset.getAssetId(), ShapeAsset::getAssetErrstrn(assetStatus));
    }
 
    if(!server)

+ 1 - 1
Engine/source/ts/tsShapeConstruct.cpp

@@ -559,7 +559,7 @@ void TSShapeConstructor::setShapeAssetId(StringTableEntry assetId)
    mShapeAsset = mShapeAssetId;
    if (mShapeAsset.notNull())
    {
-      Resource<TSShape> shape = mShapeAsset->getShapeResource();
+      TSShape* shape = mShapeAsset->getShape();
 
       if (shape)
          _onLoad(shape);