From 6870a040e2da3f4bd0886775f64d299430f6eae8 Mon Sep 17 00:00:00 2001 From: marauder2k7 Date: Wed, 14 May 2025 00:57:38 +0100 Subject: [PATCH] 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. --- Engine/source/T3D/assets/ImageAsset.h | 23 ++++++++++++++++++++++- Engine/source/assets/assetManager.cpp | 2 ++ 2 files changed, 24 insertions(+), 1 deletion(-) 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(); }