From a588dea4b6c826c0dba9b35aff63d158468d9827 Mon Sep 17 00:00:00 2001 From: Louve <33836535+Rackover@users.noreply.github.com> Date: Fri, 17 Feb 2023 13:43:52 +0100 Subject: [PATCH] [ZB]: Use mem allocator for branding (#781) Co-authored-by: Roxanne --- .../AssetInterfaces/IMaterialTechniqueSet.cpp | 32 +++++++++---------- src/Components/Modules/ZoneBuilder.cpp | 7 ++-- 2 files changed, 18 insertions(+), 21 deletions(-) diff --git a/src/Components/Modules/AssetInterfaces/IMaterialTechniqueSet.cpp b/src/Components/Modules/AssetInterfaces/IMaterialTechniqueSet.cpp index dc5ed039..cb2fe8b0 100644 --- a/src/Components/Modules/AssetInterfaces/IMaterialTechniqueSet.cpp +++ b/src/Components/Modules/AssetInterfaces/IMaterialTechniqueSet.cpp @@ -25,27 +25,25 @@ namespace Assets header->techniqueSet = builder->getIW4OfApi()->read(Game::ASSET_TYPE_TECHNIQUE_SET, name); auto ptr = header->techniqueSet; - if (!ptr) + if (ptr) { - return; - } - - while (ptr->remappedTechniqueSet && ptr->remappedTechniqueSet != ptr) - { - ptr = ptr->remappedTechniqueSet; - builder->loadAsset(Game::ASSET_TYPE_TECHNIQUE_SET, ptr, false); - - for (size_t i = 0; i < Game::TECHNIQUE_COUNT; i++) + while (ptr->remappedTechniqueSet && ptr->remappedTechniqueSet != ptr) { - const auto technique = ptr->techniques[i]; - if (technique) + ptr = ptr->remappedTechniqueSet; + builder->loadAsset(Game::ASSET_TYPE_TECHNIQUE_SET, ptr, false); + + for (size_t i = 0; i < Game::TECHNIQUE_COUNT; i++) { - for (size_t j = 0; j < technique->passCount; j++) + const auto technique = ptr->techniques[i]; + if (technique) { - const auto pass = &technique->passArray[j]; - builder->loadAsset(Game::ASSET_TYPE_VERTEXDECL, pass->vertexDecl, true); - builder->loadAsset(Game::ASSET_TYPE_PIXELSHADER, pass->pixelShader, true); - builder->loadAsset(Game::ASSET_TYPE_VERTEXSHADER, pass->vertexShader, true); + for (size_t j = 0; j < technique->passCount; j++) + { + const auto pass = &technique->passArray[j]; + builder->loadAsset(Game::ASSET_TYPE_VERTEXDECL, pass->vertexDecl, true); + builder->loadAsset(Game::ASSET_TYPE_PIXELSHADER, pass->pixelShader, true); + builder->loadAsset(Game::ASSET_TYPE_VERTEXSHADER, pass->vertexShader, true); + } } } } diff --git a/src/Components/Modules/ZoneBuilder.cpp b/src/Components/Modules/ZoneBuilder.cpp index 24a574b9..6d07155f 100644 --- a/src/Components/Modules/ZoneBuilder.cpp +++ b/src/Components/Modules/ZoneBuilder.cpp @@ -535,13 +535,12 @@ namespace Components // Add branding asset void ZoneBuilder::Zone::addBranding() { - static std::string zoneBranding; - const auto now = std::chrono::system_clock::now(); - zoneBranding = std::format("Built using the IW4x ZoneBuilder! {:%d-%m-%Y %H:%M:%OS}", now); + + auto zoneBranding = std::format("Built using the IW4x ZoneBuilder! {:%d-%m-%Y %H:%M:%OS}", now); auto brandingLen = zoneBranding.size(); // + 1 is added by the save code - this->branding = {this->zoneName.data(), 0, static_cast(brandingLen), zoneBranding.data()}; + this->branding = {this->zoneName.data(), 0, static_cast(brandingLen), getAllocator()->duplicateString(zoneBranding)}; if (this->findAsset(Game::ASSET_TYPE_RAWFILE, this->branding.name) != -1) {