mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-20 16:15:43 +00:00
chore: remove scriptstring and dependency registration from ZoneLoad template
This commit is contained in:
parent
9d7c0d3452
commit
685a99577b
@ -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)
|
||||||
|
@ -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
|
||||||
|
@ -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;
|
|
||||||
};
|
};
|
||||||
|
Loading…
x
Reference in New Issue
Block a user