chore: remove scriptstring and dependency registration from ZoneLoad template

This commit is contained in:
Jan 2024-01-22 22:09:58 +01:00
parent 9d7c0d3452
commit 685a99577b
No known key found for this signature in database
GPG Key ID: 44B581F78FF5C57C
3 changed files with 8 additions and 116 deletions

View File

@ -155,7 +155,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
if (info && StructureComputations(info).IsAsset()) if (info && StructureComputations(info).IsAsset())
{ {
LINE(LoaderClassName(info) << " loader(m_zone, m_stream);") LINE(LoaderClassName(info) << " loader(m_zone, m_stream);")
LINE("AddDependency(loader.Load(" << MakeTypePtrVarName(def) << "));") LINE("loader.Load(" << MakeTypePtrVarName(def) << ");")
} }
else else
{ {
@ -249,32 +249,6 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
LINE("}") 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<ArrayDeclarationModifier*>(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<int>(loadType) << " for scripstring")
}
}
void LoadMember_Asset(StructureInformation* info, void LoadMember_Asset(StructureInformation* info,
MemberInformation* member, MemberInformation* member,
const DeclarationModifierComputations& modifier, const DeclarationModifierComputations& modifier,
@ -283,7 +257,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
if (loadType == MemberLoadType::SINGLE_POINTER) if (loadType == MemberLoadType::SINGLE_POINTER)
{ {
LINE(LoaderClassName(member->m_type) << " loader(m_zone, m_stream);") 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) else if (loadType == MemberLoadType::POINTER_ARRAY)
{ {
@ -483,10 +457,6 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
{ {
LoadMember_String(info, member, modifier, loadType); 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()) else if (member->m_type && StructureComputations(member->m_type).IsAsset())
{ {
LoadMember_Asset(info, member, modifier, loadType); 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) << ");") 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--; m_intendation--;
LINE("}") LINE("}")
} }
@ -894,7 +858,7 @@ class ZoneLoadTemplate::Internal final : BaseTemplate
if (computations.ShouldIgnore()) if (computations.ShouldIgnore())
return; 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()) || computations.IsAfterPartialLoad())
{ {
if (info->m_definition->GetType() == DataDefinitionType::UNION) if (info->m_definition->GetType() == DataDefinitionType::UNION)

View File

@ -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<scr_string_t> scriptStrings, std::vector<XAssetInfoGeneric*> dependencies) const
{ {
if (assetInfo == nullptr) return m_zone->m_pools->AddAsset(m_asset_type, std::move(name), asset, std::move(dependencies), std::move(scriptStrings));
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<scr_string_t>(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<scr_string_t> 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));
} }
XAssetInfoGeneric* AssetLoader::GetAssetInfo(std::string name) const XAssetInfoGeneric* AssetLoader::GetAssetInfo(std::string name) const

View File

@ -11,21 +11,12 @@ class AssetLoader : public ContentLoaderBase
{ {
asset_type_t m_asset_type; asset_type_t m_asset_type;
std::vector<XAssetInfoGeneric*> m_dependencies;
std::unordered_set<scr_string_t> m_used_script_strings;
protected: protected:
scr_string_t* varScriptString; scr_string_t* varScriptString;
AssetLoader(asset_type_t assetType, Zone* zone, IZoneInputStream* stream); AssetLoader(asset_type_t assetType, Zone* zone, IZoneInputStream* stream);
void AddDependency(XAssetInfoGeneric* assetInfo); XAssetInfoGeneric* LinkAsset(std::string name, void* asset, std::vector<scr_string_t> scriptStrings, std::vector<XAssetInfoGeneric*> dependencies) const;
scr_string_t UseScriptString(scr_string_t scrString); _NODISCARD XAssetInfoGeneric* GetAssetInfo(std::string name) const;
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;
}; };