Browse Source

Merge pull request #433 from Azaezel/alpha40/shapeAssetErrorFollowups

moar asset errorhandling
Brian Roberts 4 years ago
parent
commit
03e6b5b096
1 changed files with 9 additions and 5 deletions
  1. 9 5
      Engine/source/T3D/assets/ShapeAsset.cpp

+ 9 - 5
Engine/source/T3D/assets/ShapeAsset.cpp

@@ -274,7 +274,7 @@ bool ShapeAsset::loadShape()
 
 
    if (!mShape)
    if (!mShape)
    {
    {
-      Con::errorf("ShapeAsset::loadShape : failed to load shape file!");
+      Con::errorf("ShapeAsset::loadShape : failed to load shape file %s (%s)!", getAssetName(), mFilePath);
       mLoadedState = BadFileReference;
       mLoadedState = BadFileReference;
       return false; //if it failed to load, bail out
       return false; //if it failed to load, bail out
    }
    }
@@ -437,12 +437,16 @@ U32 ShapeAsset::getAssetById(StringTableEntry assetId, AssetPtr<ShapeAsset>* sha
    if ((*shapeAsset))
    if ((*shapeAsset))
       return (*shapeAsset)->mLoadedState;
       return (*shapeAsset)->mLoadedState;
 
 
-   //Didn't work, so have us fall back to a placeholder asset
-   StringTableEntry noShapeId = StringTable->insert("Core_Rendering:noshape");
-   shapeAsset->setAssetId(noShapeId);
-
    if (shapeAsset->notNull())
    if (shapeAsset->notNull())
    {
    {
+      //Didn't work, so have us fall back to a placeholder asset
+      StringTableEntry noShapeId = StringTable->insert("Core_Rendering:noshape");
+      shapeAsset->setAssetId(noShapeId);
+
+      //handle noshape not being loaded itself
+      if ((*shapeAsset)->mLoadedState == BadFileReference)
+         return AssetErrCode::Failed;
+
       (*shapeAsset)->mLoadedState = AssetErrCode::UsingFallback;
       (*shapeAsset)->mLoadedState = AssetErrCode::UsingFallback;
       return AssetErrCode::UsingFallback;
       return AssetErrCode::UsingFallback;
    }
    }