diff --git a/Engine/source/T3D/assets/ImageAsset.h b/Engine/source/T3D/assets/ImageAsset.h index 503374752..c584b5b8d 100644 --- a/Engine/source/T3D/assets/ImageAsset.h +++ b/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(); \ diff --git a/Engine/source/assets/assetManager.cpp b/Engine/source/assets/assetManager.cpp index 0b166a238..2cc3e5d76 100644 --- a/Engine/source/assets/assetManager.cpp +++ b/Engine/source/assets/assetManager.cpp @@ -119,6 +119,8 @@ void AssetManager::onRemove() mAssetTagsManifest->deleteObject(); } + purgeAssets(); + // Call parent. Parent::onRemove(); }