From 829cc2b24ae79fcbed6470b23355fa030974bb57 Mon Sep 17 00:00:00 2001 From: Areloch Date: Sun, 7 Jan 2024 23:09:41 -0600 Subject: [PATCH] Adjusts some of the loading logic, for guiBitmapCtrl mostly, to not try and load ALL image content upfront during client init, improving load times --- Engine/source/gui/controls/guiBitmapCtrl.cpp | 4 +++- Engine/source/materials/materialManager.cpp | 13 +++++++++++-- .../persistence/taml/binary/tamlBinaryReader.cpp | 2 ++ .../source/persistence/taml/xml/tamlXmlReader.cpp | 2 ++ 4 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Engine/source/gui/controls/guiBitmapCtrl.cpp b/Engine/source/gui/controls/guiBitmapCtrl.cpp index 0c34280e0..18be526f1 100644 --- a/Engine/source/gui/controls/guiBitmapCtrl.cpp +++ b/Engine/source/gui/controls/guiBitmapCtrl.cpp @@ -81,7 +81,9 @@ void GuiBitmapCtrl::initPersistFields() docsURL; addGroup( "Bitmap" ); - INITPERSISTFIELD_IMAGEASSET(Bitmap, GuiBitmapCtrl, The bitmap file to display in the control); + addField("Bitmap", TypeImageFilename, Offset(mBitmapName, GuiBitmapCtrl), assetDoc(Bitmap, docs), AbstractClassRep::FIELD_HideInInspectors); + addField("BitmapAsset", TypeImageAssetId, Offset(mBitmapAssetId, GuiBitmapCtrl), assetDoc(Bitmap, asset docs.)); + addField("color", TypeColorI, Offset(mColor, GuiBitmapCtrl),"color mul"); addField( "wrap", TypeBool, Offset( mWrap, GuiBitmapCtrl ), "If true, the bitmap is tiled inside the control rather than stretched to fit." ); diff --git a/Engine/source/materials/materialManager.cpp b/Engine/source/materials/materialManager.cpp index 0a9d470c2..d2979d8eb 100644 --- a/Engine/source/materials/materialManager.cpp +++ b/Engine/source/materials/materialManager.cpp @@ -297,10 +297,19 @@ BaseMatInstance *MaterialManager::getMeshDebugMatInstance(const LinearColorF &me void MaterialManager::mapMaterial(const String & textureName, const String & materialName) { - if (getMapEntry(textureName).isNotEmpty()) + String currentMapEntry = getMapEntry(textureName); + if (currentMapEntry.isNotEmpty()) { if (!textureName.equal("unmapped_mat", String::NoCase)) - Con::warnf(ConsoleLogEntry::General, "Warning, overwriting material for: %s", textureName.c_str()); + { + SimObject* originalMat; + SimObject* newMat; + + if (Sim::findObject(currentMapEntry, originalMat) && Sim::findObject(materialName, newMat)) + Con::warnf(ConsoleLogEntry::General, "Warning, overwriting material for: \"%s\" in %s by %s", textureName.c_str(), originalMat->getFilename(), newMat->getFilename()); + else + Con::warnf(ConsoleLogEntry::General, "Warning, overwriting material for: %s", textureName.c_str()); + } } mMaterialMap[String::ToLower(textureName)] = materialName; diff --git a/Engine/source/persistence/taml/binary/tamlBinaryReader.cpp b/Engine/source/persistence/taml/binary/tamlBinaryReader.cpp index f703bbb7f..cd128175d 100644 --- a/Engine/source/persistence/taml/binary/tamlBinaryReader.cpp +++ b/Engine/source/persistence/taml/binary/tamlBinaryReader.cpp @@ -147,6 +147,8 @@ SimObject* TamlBinaryReader::parseElement( Stream& stream, const U32 versionId ) if ( pSimObject == NULL ) return NULL; + pSimObject->setFilename(mpTaml->getFilePathBuffer()); + // Find Taml callbacks. TamlCallbacks* pCallbacks = dynamic_cast( pSimObject ); diff --git a/Engine/source/persistence/taml/xml/tamlXmlReader.cpp b/Engine/source/persistence/taml/xml/tamlXmlReader.cpp index fb8814260..7fe2637c9 100644 --- a/Engine/source/persistence/taml/xml/tamlXmlReader.cpp +++ b/Engine/source/persistence/taml/xml/tamlXmlReader.cpp @@ -119,6 +119,8 @@ SimObject* TamlXmlReader::parseElement( tinyxml2::XMLElement* pXmlElement ) if ( pSimObject == NULL ) return NULL; + pSimObject->setFilename(mpTaml->getFilePathBuffer()); + // Find Taml callbacks. TamlCallbacks* pCallbacks = dynamic_cast( pSimObject );