mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-12 07:48:16 -05:00
Save scriptstrings per zone and not per asset since that solves all problems with multiple assets of the same zone referencing the same struct in memory that has scriptstring indices
This commit is contained in:
@ -40,12 +40,7 @@ $TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)
|
||||
$\n$
|
||||
|
||||
varScriptString = $TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$;$\n$
|
||||
$if(!member.IsReusable)$
|
||||
LoadScriptStringArray(true, $PrintEvaluation(reference.ArrayPointerCountEvaluation)$);
|
||||
$else$
|
||||
LoadScriptStringArrayRealloc(true, $PrintEvaluation(reference.ArrayPointerCountEvaluation)$);$\n$
|
||||
$TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$ = varScriptString;
|
||||
$endif$
|
||||
|
||||
%>
|
||||
|
||||
@ -75,11 +70,6 @@ if($TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(referen
|
||||
else
|
||||
{
|
||||
$TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$ = m_stream->ConvertOffsetToPointer($TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$);
|
||||
$if(member.IsScriptString)$
|
||||
varScriptString = $TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$;
|
||||
LoadScriptStringArrayRealloc(false, $PrintEvaluation(reference.ArrayPointerCountEvaluation)$);
|
||||
$TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$ = varScriptString;
|
||||
$endif$
|
||||
}$\\$
|
||||
$endif$
|
||||
>>
|
||||
@ -129,7 +119,7 @@ $endif$
|
||||
%>
|
||||
|
||||
LoadPointerArrayMethod_Asset(context, type, structure) ::= <<
|
||||
$LoaderClassName(structure)$ loader(m_script_string_provider, m_zone, m_stream);
|
||||
$LoaderClassName(structure)$ loader(m_zone, m_stream);
|
||||
AddDependency(loader.Load($TypePtrVarName(type)$));
|
||||
>>
|
||||
|
||||
|
@ -38,7 +38,7 @@ $endif$
|
||||
>>
|
||||
|
||||
LoadSinglePointerAsset(context, structure, member, reference) ::= <<
|
||||
$LoaderClassName(member.StructureType)$ loader(m_script_string_provider, m_zone, m_stream);
|
||||
$LoaderClassName(member.StructureType)$ loader(m_zone, m_stream);
|
||||
AddDependency(loader.Load(&$TypeVarName(structure.Type)$->$member.Member.Name$$PrintArrayIndices(reference)$));
|
||||
>>
|
||||
|
||||
|
@ -12,7 +12,7 @@ import "Loading/PointerArray.stg"
|
||||
// Loading common
|
||||
LoaderClassName(asset) ::= "Loader_$asset.Type.Name$"
|
||||
|
||||
HeaderConstructor(context) ::= "$LoaderClassName(context.Asset)$(IZoneScriptStringProvider* scriptStringProvider, Zone* zone, IZoneInputStream* stream);"
|
||||
HeaderConstructor(context) ::= "$LoaderClassName(context.Asset)$(Zone* zone, IZoneInputStream* stream);"
|
||||
|
||||
HeaderTempPtrLoadMethodDeclaration(structure) ::= "void LoadPtr_$structure.Type.Name$(bool atStreamStart);"
|
||||
HeaderArrayLoadMethodDeclaration(type) ::= "void LoadArray_$SafeTypeName(type)$(bool atStreamStart, size_t count);"
|
||||
@ -290,8 +290,8 @@ var$type.Name$Ptr = nullptr;
|
||||
>>
|
||||
|
||||
ConstructorMethod(context) ::= <<
|
||||
$LoaderClassName(context.Asset)$::$LoaderClassName(context.Asset)$(IZoneScriptStringProvider* scriptStringProvider, Zone* zone, IZoneInputStream* stream)
|
||||
: AssetLoader($context.Asset.AssetEnumEntry.Name$, scriptStringProvider, zone, stream)$\\$
|
||||
$LoaderClassName(context.Asset)$::$LoaderClassName(context.Asset)$(Zone* zone, IZoneInputStream* stream)
|
||||
: AssetLoader($context.Asset.AssetEnumEntry.Name$, zone, stream)$\\$
|
||||
$if(context.HasActions)$, m_actions(zone)$endif$
|
||||
{
|
||||
m_asset_info = nullptr;
|
||||
|
Reference in New Issue
Block a user