diff --git a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp index 927f8273..c7929708 100644 --- a/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp +++ b/src/ZoneCodeGeneratorLib/Generating/Templates/ZoneLoadTemplate.cpp @@ -155,7 +155,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate if (info && StructureComputations(info).IsAsset()) { LINE(LoaderClassName(info) << " loader(m_zone, m_stream);") - LINE("AddDependency(loader.Load(" << MakeTypePtrVarName(def) << "));") + LINE("loader.Load(" << MakeTypePtrVarName(def) << ");") } else { @@ -249,32 +249,6 @@ class ZoneLoadTemplate::Internal final : BaseTemplate LINE("}") } - void LoadMember_ScriptString(StructureInformation* info, - MemberInformation* member, - const DeclarationModifierComputations& modifier, - const MemberLoadType loadType) const - { - if (loadType == MemberLoadType::ARRAY_POINTER) - { - LINE("varScriptString = " << MakeMemberAccess(info, member, modifier) << ";") - LINE("LoadScriptStringArray(true, " << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");") - } - else if (loadType == MemberLoadType::EMBEDDED_ARRAY) - { - LINE("varScriptString = " << MakeMemberAccess(info, member, modifier) << ";") - LINE("LoadScriptStringArray(false, " << MakeArrayCount(dynamic_cast(modifier.GetDeclarationModifier())) << ");") - } - else if (loadType == MemberLoadType::EMBEDDED) - { - LINE(MakeMemberAccess(info, member, modifier) << " = UseScriptString(" << MakeMemberAccess(info, member, modifier) << ");") - } - else - { - assert(false); - LINE("#error unsupported loadType " << static_cast(loadType) << " for scripstring") - } - } - void LoadMember_Asset(StructureInformation* info, MemberInformation* member, const DeclarationModifierComputations& modifier, @@ -283,7 +257,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate if (loadType == MemberLoadType::SINGLE_POINTER) { LINE(LoaderClassName(member->m_type) << " loader(m_zone, m_stream);") - LINE("AddDependency(loader.Load(&" << MakeMemberAccess(info, member, modifier) << "));") + LINE("loader.Load(&" << MakeMemberAccess(info, member, modifier) << ");") } else if (loadType == MemberLoadType::POINTER_ARRAY) { @@ -483,10 +457,6 @@ class ZoneLoadTemplate::Internal final : BaseTemplate { LoadMember_String(info, member, modifier, loadType); } - else if (member->m_is_script_string) - { - LoadMember_ScriptString(info, member, modifier, loadType); - } else if (member->m_type && StructureComputations(member->m_type).IsAsset()) { LoadMember_Asset(info, member, modifier, loadType); @@ -671,12 +641,6 @@ class ZoneLoadTemplate::Internal final : BaseTemplate LINE(MakeMemberAccess(info, member, modifier) << " = m_stream->ConvertOffsetToPointer(" << MakeMemberAccess(info, member, modifier) << ");") - if (member->m_is_script_string && loadType == MemberLoadType::ARRAY_POINTER) - { - LINE("MarkScriptStringArrayAsUsed(" << MakeMemberAccess(info, member, modifier) << ", " - << MakeEvaluation(modifier.GetArrayPointerCountEvaluation()) << ");") - } - m_intendation--; LINE("}") } @@ -894,7 +858,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate if (computations.ShouldIgnore()) return; - if (member->m_is_string || member->m_is_script_string || computations.ContainsNonEmbeddedReference() || member->m_type && !member->m_type->m_is_leaf + if (member->m_is_string || computations.ContainsNonEmbeddedReference() || member->m_type && !member->m_type->m_is_leaf || computations.IsAfterPartialLoad()) { if (info->m_definition->GetType() == DataDefinitionType::UNION) diff --git a/src/ZoneLoading/Loading/AssetLoader.cpp b/src/ZoneLoading/Loading/AssetLoader.cpp index 8a903c91..c56cfe23 100644 --- a/src/ZoneLoading/Loading/AssetLoader.cpp +++ b/src/ZoneLoading/Loading/AssetLoader.cpp @@ -10,73 +10,10 @@ AssetLoader::AssetLoader(const asset_type_t assetType, Zone* zone, IZoneInputStr { } -void AssetLoader::AddDependency(XAssetInfoGeneric* assetInfo) +XAssetInfoGeneric* + AssetLoader::LinkAsset(std::string name, void* asset, std::vector scriptStrings, std::vector dependencies) const { - if (assetInfo == nullptr) - return; - - const auto existingEntry = std::find(m_dependencies.begin(), m_dependencies.end(), assetInfo); - if (existingEntry != m_dependencies.end()) - { - return; - } - - m_dependencies.push_back(assetInfo); -} - -scr_string_t AssetLoader::UseScriptString(const scr_string_t scrString) -{ - assert(scrString < m_zone->m_script_strings.Count()); - - if (scrString >= m_zone->m_script_strings.Count()) - return 0u; - - m_used_script_strings.emplace(scrString); - return scrString; -} - -void AssetLoader::LoadScriptStringArray(const bool atStreamStart, const size_t count) -{ - assert(varScriptString != nullptr); - - if (atStreamStart) - m_stream->Load(varScriptString, count); - - auto* ptr = varScriptString; - for (size_t index = 0; index < count; index++) - { - *ptr = UseScriptString(*ptr); - ptr++; - } -} - -void AssetLoader::MarkScriptStringArrayAsUsed(const scr_string_t* scrStringArray, const size_t count) -{ - for (size_t index = 0; index < count; index++) - { - const auto scrString = scrStringArray[index]; - if (scrString >= m_zone->m_script_strings.Count()) - continue; - - m_used_script_strings.emplace(scrString); - } -} - -XAssetInfoGeneric* AssetLoader::LinkAsset(std::string name, void* asset) -{ - std::vector usedScriptStrings; - if (!m_used_script_strings.empty()) - { - for (auto scrString : m_used_script_strings) - { - usedScriptStrings.push_back(scrString); - } - - std::sort(usedScriptStrings.begin(), usedScriptStrings.end()); - m_used_script_strings.clear(); - } - - return m_zone->m_pools->AddAsset(m_asset_type, std::move(name), asset, std::move(m_dependencies), std::move(usedScriptStrings)); + return m_zone->m_pools->AddAsset(m_asset_type, std::move(name), asset, std::move(dependencies), std::move(scriptStrings)); } XAssetInfoGeneric* AssetLoader::GetAssetInfo(std::string name) const diff --git a/src/ZoneLoading/Loading/AssetLoader.h b/src/ZoneLoading/Loading/AssetLoader.h index 55d1bc84..47246188 100644 --- a/src/ZoneLoading/Loading/AssetLoader.h +++ b/src/ZoneLoading/Loading/AssetLoader.h @@ -11,21 +11,12 @@ class AssetLoader : public ContentLoaderBase { asset_type_t m_asset_type; - std::vector m_dependencies; - std::unordered_set m_used_script_strings; - protected: scr_string_t* varScriptString; AssetLoader(asset_type_t assetType, Zone* zone, IZoneInputStream* stream); - void AddDependency(XAssetInfoGeneric* assetInfo); + XAssetInfoGeneric* LinkAsset(std::string name, void* asset, std::vector scriptStrings, std::vector dependencies) const; - scr_string_t UseScriptString(scr_string_t scrString); - void LoadScriptStringArray(bool atStreamStart, size_t count); - void MarkScriptStringArrayAsUsed(const scr_string_t* scrStringArray, size_t count); - - XAssetInfoGeneric* LinkAsset(std::string name, void* asset); - - XAssetInfoGeneric* GetAssetInfo(std::string name) const; + _NODISCARD XAssetInfoGeneric* GetAssetInfo(std::string name) const; };