Kaynağa Gözat

processed material null ref

processedMaterial was not checking to see if each asset was null before getting the image filename inside the call to _createCompositeTexture
marauder2k7 7 ay önce
ebeveyn
işleme
a52069bbc5

+ 1 - 1
Engine/source/T3D/assets/assetMacroHelpers.h

@@ -130,7 +130,7 @@ for (U32 i = 0; i < max; i++)\
 #define DEF_ASSET_BINDS_REFACTOR(className,name)\
 DefineEngineMethod(className, get##name, StringTableEntry, (), , "get name")\
 {\
-   return object->get##name##Asset()->getImageFile(); \
+   return object->get##name##Asset().notNull() ? object->get##name##Asset()->getImageFile() : ""; \
 }\
 DefineEngineMethod(className, get##name##Asset, StringTableEntry, (), , assetText(name, asset reference))\
 {\

+ 5 - 3
Engine/source/materials/processedMaterial.cpp

@@ -477,9 +477,11 @@ void ProcessedMaterial::_setStageData()
             inputKey[1] = mMaterial->mRoughnessChan[i];
             inputKey[2] = mMaterial->mMetalChan[i];
             inputKey[3] = 0;
-            mStages[i].setTex(MFT_OrmMap, _createCompositeTexture( mMaterial->getAOMapAsset(i)->getImageFile(), mMaterial->getRoughMapAsset(i)->getImageFile(),
-               mMaterial->getMetalMapAsset(i)->getImageFile(), "",
-               inputKey, profile));
+            mStages[i].setTex(MFT_OrmMap,
+               _createCompositeTexture(mMaterial->getAOMapAsset(i).notNull() ? mMaterial->getAOMapAsset(i)->getImageFile() : "",
+                                       mMaterial->getRoughMapAsset(i).notNull() ? mMaterial->getRoughMapAsset(i)->getImageFile() : "",
+                                       mMaterial->getMetalMapAsset(i).notNull() ? mMaterial->getMetalMapAsset(i)->getImageFile() : "",
+                  "", inputKey, profile));
             if (!mStages[i].getTex(MFT_OrmMap))
                mMaterial->logError("Failed to dynamically create ORM Config map for stage %i", i);
          }