Browse Source

purge assets and clear image

image asset was missing a clear, passing a null value should clear the image asset and set it to null on materials.
marauder2k7 4 months ago
parent
commit
6870a040e2
2 changed files with 24 additions and 1 deletions
  1. 22 1
      Engine/source/T3D/assets/ImageAsset.h
  2. 2 0
      Engine/source/assets/assetManager.cpp

+ 22 - 1
Engine/source/T3D/assets/ImageAsset.h

@@ -249,7 +249,11 @@ public:
    void _set##name(StringTableEntry _in){                                                                                                                                     \
       if(m##name##Asset.getAssetId() == _in)                                                                                                                                  \
          return;                                                                                                                                                              \
-                                                                                                                                                                              \
+      if(_in == NULL || _in == StringTable->EmptyString())                                                                                                                    \
+      {                                                                                                                                                                       \
+         m##name##Asset = NULL;                                                                                                                                               \
+         return;                                                                                                                                                              \
+      }                                                                                                                                                                       \
       if(!AssetDatabase.isDeclaredAsset(_in))                                                                                                                                 \
       {                                                                                                                                                                       \
          StringTableEntry imageAssetId = StringTable->EmptyString();                                                                                                          \
@@ -296,6 +300,12 @@ public:
    void _set##name(StringTableEntry _in){                                                                                                                                     \
       if(m##name##Asset.getAssetId() == _in)                                                                                                                                  \
          return;                                                                                                                                                              \
+      if(_in == NULL || _in == StringTable->EmptyString())                                                                                                                    \
+      {                                                                                                                                                                       \
+         m##name##Asset = NULL;                                                                                                                                               \
+         setMaskBits(mask);                                                                                                                                                   \
+         return;                                                                                                                                                              \
+      }                                                                                                                                                                       \
       if(!AssetDatabase.isDeclaredAsset(_in))                                                                                                                                 \
       {                                                                                                                                                                       \
          StringTableEntry imageAssetId = StringTable->EmptyString();                                                                                                          \
@@ -347,6 +357,11 @@ public:
    void _set##name(StringTableEntry _in, const U32& index){                                                                                                                   \
       if(m##name##Asset[index].getAssetId() == _in)                                                                                                                           \
          return;                                                                                                                                                              \
+      if(_in == NULL || _in == StringTable->EmptyString())                                                                                                                    \
+      {                                                                                                                                                                       \
+         m##name##Asset[index] = NULL;                                                                                                                                        \
+         return;                                                                                                                                                              \
+      }                                                                                                                                                                       \
       if(!AssetDatabase.isDeclaredAsset(_in))                                                                                                                                 \
       {                                                                                                                                                                       \
          StringTableEntry imageAssetId = StringTable->EmptyString();                                                                                                          \
@@ -394,6 +409,12 @@ public:
    void _set##name(StringTableEntry _in, const U32& index){                                                                                                                   \
       if(m##name##Asset[index].getAssetId() == _in)                                                                                                                           \
          return;                                                                                                                                                              \
+      if(_in == NULL || _in == StringTable->EmptyString())                                                                                                                    \
+      {                                                                                                                                                                       \
+         m##name##Asset[index] = NULL;                                                                                                                                        \
+         setMaskBits(mask);                                                                                                                                                   \
+         return;                                                                                                                                                              \
+      }                                                                                                                                                                       \
       if(!AssetDatabase.isDeclaredAsset(_in))                                                                                                                                 \
       {                                                                                                                                                                       \
          StringTableEntry imageAssetId = StringTable->EmptyString();                                                                                                          \

+ 2 - 0
Engine/source/assets/assetManager.cpp

@@ -119,6 +119,8 @@ void AssetManager::onRemove()
         mAssetTagsManifest->deleteObject();
     }
 
+    purgeAssets();
+
     // Call parent.
     Parent::onRemove();
 }