From 96891e5673ca114f3d5c5490cdc180cb0cf2b57e Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 28 Sep 2021 17:33:36 -0500 Subject: [PATCH 1/3] early out if any asset feed route results in explicitly being told to use an emptystring --- Engine/source/T3D/assets/SoundAsset.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Engine/source/T3D/assets/SoundAsset.h b/Engine/source/T3D/assets/SoundAsset.h index ca83e477b..d6baadbbf 100644 --- a/Engine/source/T3D/assets/SoundAsset.h +++ b/Engine/source/T3D/assets/SoundAsset.h @@ -234,6 +234,8 @@ public: \ {\ m##name = NULL;\ }\ + if(get##name() == StringTable->EmptyString())\ + return true;\ \ if (m##name##Asset.notNull() && m##name##Asset->getStatus() != SoundAsset::Ok)\ {\ From 776741770db23fb0684d81b65eddd0d1aed295c5 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 28 Sep 2021 18:16:14 -0500 Subject: [PATCH 2/3] boolean isvalid chjecks for assets. tests wether it's non-empty and reporting zero flaws --- Engine/source/T3D/assets/ImageAsset.h | 6 ++++-- Engine/source/T3D/assets/MaterialAsset.h | 3 ++- Engine/source/T3D/assets/ShapeAsset.h | 6 ++++-- Engine/source/T3D/assets/SoundAsset.h | 6 ++++-- Engine/source/T3D/fx/lightning.cpp | 4 ++-- 5 files changed, 16 insertions(+), 9 deletions(-) diff --git a/Engine/source/T3D/assets/ImageAsset.h b/Engine/source/T3D/assets/ImageAsset.h index b79dc5f5d..57155ff2f 100644 --- a/Engine/source/T3D/assets/ImageAsset.h +++ b/Engine/source/T3D/assets/ImageAsset.h @@ -270,7 +270,8 @@ public: \ GFXTexHandle get##name##Resource() \ {\ return m##name;\ - } + }\ + bool name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_IMAGEASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ @@ -494,7 +495,8 @@ public: \ if(index >= sm##name##Count || index < 0)\ return nullptr;\ return m##name[index];\ - } + }\ + bool name##Valid(const U32& id) { (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_IMAGEASSET_ARRAY_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/assets/MaterialAsset.h b/Engine/source/T3D/assets/MaterialAsset.h index c747be793..e9a74174a 100644 --- a/Engine/source/T3D/assets/MaterialAsset.h +++ b/Engine/source/T3D/assets/MaterialAsset.h @@ -259,7 +259,8 @@ public: \ SimObjectPtr get##name##Resource() \ {\ return m##name;\ - } + }\ + bool is##name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_MATERIALASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/assets/ShapeAsset.h b/Engine/source/T3D/assets/ShapeAsset.h index d3af516c5..055ecdb42 100644 --- a/Engine/source/T3D/assets/ShapeAsset.h +++ b/Engine/source/T3D/assets/ShapeAsset.h @@ -321,7 +321,8 @@ public: \ Resource get##name##Resource() \ {\ return m##name;\ - } + }\ + bool is##name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_SHAPEASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ @@ -522,7 +523,8 @@ public: \ if(index >= sm##name##Count || index < 0)\ return ResourceManager::get().load( "" );\ return m##name[index];\ - } + }\ + bool is##name##Valid(const U32& id) { (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_SHAPEASSET_ARRAY_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/assets/SoundAsset.h b/Engine/source/T3D/assets/SoundAsset.h index d6baadbbf..2f70b83c7 100644 --- a/Engine/source/T3D/assets/SoundAsset.h +++ b/Engine/source/T3D/assets/SoundAsset.h @@ -270,7 +270,8 @@ public: \ if (get##name() != StringTable->EmptyString() && m##name##Asset.notNull())\ return m##name##Asset->getSfxProfile();\ return NULL;\ - } + }\ + bool is##name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_SOUNDASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ @@ -485,7 +486,8 @@ public: \ if (get##name(id) != StringTable->EmptyString() && m##name##Asset[id].notNull())\ return m##name##Asset[id]->getSfxProfile();\ return NULL;\ - } + }\ + bool is##name##Valid(const U32& id) { (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok) ? true : false; } #define DECLARE_SOUNDASSET_ARRAY_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/fx/lightning.cpp b/Engine/source/T3D/fx/lightning.cpp index 8f1ba8bf6..905615a3d 100644 --- a/Engine/source/T3D/fx/lightning.cpp +++ b/Engine/source/T3D/fx/lightning.cpp @@ -296,7 +296,7 @@ bool LightningData::preload(bool server, String &errorStr) { for (S32 i = 0; i < MaxThunders; i++) { - if (getThunderSound(i)) + if (isThunderSoundValid(i)) { _setThunderSound(getThunderSound(i), i); if (!getThunderSoundProfile(i)) @@ -304,7 +304,7 @@ bool LightningData::preload(bool server, String &errorStr) } } - if(getStrikeSound() && !getStrikeSoundProfile()) + if(isStrikeSoundValid() && !getStrikeSoundProfile()) Con::errorf(ConsoleLogEntry::General, "LightningData::preload: can't get sfxProfile from asset"); mNumStrikeTextures = 0; From 2630b4ada6a97222ad1e200fa962cf426b7d4161 Mon Sep 17 00:00:00 2001 From: AzaezelX Date: Tue, 28 Sep 2021 18:50:35 -0500 Subject: [PATCH 3/3] corrected and simplified the isValid method macro injections --- Engine/source/T3D/assets/ImageAsset.h | 4 ++-- Engine/source/T3D/assets/MaterialAsset.h | 2 +- Engine/source/T3D/assets/ShapeAsset.h | 4 ++-- Engine/source/T3D/assets/SoundAsset.h | 4 ++-- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/Engine/source/T3D/assets/ImageAsset.h b/Engine/source/T3D/assets/ImageAsset.h index 57155ff2f..7afcd6da2 100644 --- a/Engine/source/T3D/assets/ImageAsset.h +++ b/Engine/source/T3D/assets/ImageAsset.h @@ -271,7 +271,7 @@ public: \ {\ return m##name;\ }\ - bool name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } + bool name##Valid() {return (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok); } #define DECLARE_IMAGEASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ @@ -496,7 +496,7 @@ public: \ return nullptr;\ return m##name[index];\ }\ - bool name##Valid(const U32& id) { (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok) ? true : false; } + bool name##Valid(const U32& id) {return (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok); } #define DECLARE_IMAGEASSET_ARRAY_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/assets/MaterialAsset.h b/Engine/source/T3D/assets/MaterialAsset.h index e9a74174a..fc383810f 100644 --- a/Engine/source/T3D/assets/MaterialAsset.h +++ b/Engine/source/T3D/assets/MaterialAsset.h @@ -260,7 +260,7 @@ public: \ {\ return m##name;\ }\ - bool is##name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } + bool is##name##Valid() {return (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok); } #define DECLARE_MATERIALASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/assets/ShapeAsset.h b/Engine/source/T3D/assets/ShapeAsset.h index 055ecdb42..2d641a840 100644 --- a/Engine/source/T3D/assets/ShapeAsset.h +++ b/Engine/source/T3D/assets/ShapeAsset.h @@ -322,7 +322,7 @@ public: \ {\ return m##name;\ }\ - bool is##name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } + bool is##name##Valid() {return (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok); } #define DECLARE_SHAPEASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ @@ -524,7 +524,7 @@ public: \ return ResourceManager::get().load( "" );\ return m##name[index];\ }\ - bool is##name##Valid(const U32& id) { (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok) ? true : false; } + bool is##name##Valid(const U32& id) {return (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok); } #define DECLARE_SHAPEASSET_ARRAY_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ diff --git a/Engine/source/T3D/assets/SoundAsset.h b/Engine/source/T3D/assets/SoundAsset.h index 2f70b83c7..2f3cc4615 100644 --- a/Engine/source/T3D/assets/SoundAsset.h +++ b/Engine/source/T3D/assets/SoundAsset.h @@ -271,7 +271,7 @@ public: \ return m##name##Asset->getSfxProfile();\ return NULL;\ }\ - bool is##name##Valid() { (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok) ? true : false; } + bool is##name##Valid() { return (get##name() != StringTable->EmptyString() && m##name##Asset->getStatus() == AssetBase::Ok); } #define DECLARE_SOUNDASSET_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\ @@ -487,7 +487,7 @@ public: \ return m##name##Asset[id]->getSfxProfile();\ return NULL;\ }\ - bool is##name##Valid(const U32& id) { (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok) ? true : false; } + bool is##name##Valid(const U32& id) {return (get##name(id) != StringTable->EmptyString() && m##name##Asset[id]->getStatus() == AssetBase::Ok); } #define DECLARE_SOUNDASSET_ARRAY_SETGET(className, name)\ static bool _set##name##Data(void* obj, const char* index, const char* data)\