mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-06-21 12:17:53 -05:00
ZoneCodeGenerator: Add loading of dynamic arrays
This commit is contained in:
@ -4,6 +4,7 @@ import "Common.stg"
|
||||
|
||||
import "Loading/Common.stg"
|
||||
import "Loading/ArrayPointer.stg"
|
||||
import "Loading/DynamicArray.stg"
|
||||
import "Loading/Embedded.stg"
|
||||
import "Loading/SinglePointer.stg"
|
||||
import "Loading/PointerArray.stg"
|
||||
@ -82,7 +83,7 @@ $LoadMemberReference(context, structure, member, entry)$}$
|
||||
|
||||
LoadMemberReference(context, structure, member, reference) ::= <%
|
||||
$if(reference.IsDynamicArray)$
|
||||
// Dynamic array $member.Member.Name$
|
||||
$LoadDynamicArray(context, structure, member, reference)$
|
||||
$elseif(reference.IsSinglePointer)$
|
||||
$LoadSinglePointer(context, structure, member, reference)$
|
||||
$elseif(reference.IsArrayPointer)$
|
||||
@ -166,7 +167,7 @@ $elseif(member.Computations.ContainsNonEmbeddedReference)$
|
||||
$LoadMemberCondition(context, structure, member)$
|
||||
$elseif(member.StructureType && !member.StructureType.IsLeaf)$
|
||||
$LoadMemberCondition(context, structure, member)$
|
||||
$elseif(member.Computations.IsDynamicMember)$
|
||||
$elseif(member.Computations.IsAfterPartialLoad)$
|
||||
$LoadMemberCondition(context, structure, member)$
|
||||
$endif$
|
||||
|
||||
@ -208,11 +209,7 @@ void $LoaderClassName(context.Asset)$::LoadPtr_$structure.Type.Name$(const bool
|
||||
}
|
||||
else
|
||||
{
|
||||
$if(structure.Block.IsTemp)$
|
||||
*$TypePtrVarName(structure.Type)$ = m_stream->ConvertOffsetToAlias(*$TypePtrVarName(structure.Type)$);
|
||||
$else$
|
||||
*$TypePtrVarName(structure.Type)$ = m_stream->ConvertOffsetToPointer(*$TypePtrVarName(structure.Type)$);
|
||||
$endif$
|
||||
}
|
||||
}
|
||||
|
||||
@ -252,13 +249,15 @@ void $LoaderClassName(context.Asset)$::Load_$structure.Type.Name$(const bool atS
|
||||
$else$
|
||||
m_stream->LoadPartial<$structure.Type.FullName$>($TypeVarName(structure.Type)$, offsetof($structure.Type.FullName$, $structure.Computations.DynamicMember.Member.Name$));$\\$
|
||||
$endif$
|
||||
$else$
|
||||
assert(atStreamStart);$\\$
|
||||
$endif$
|
||||
$if(structure.ReferenceFromNonDefaultNormalBlockExists || structure.IsAsset)$
|
||||
$if(structure.IsAsset)$
|
||||
|
||||
m_stream->PushBlock($context.DefaultNormalBlock.Name$);$\\$
|
||||
$endif$
|
||||
$structure.OrderedMembers:{member | $LoadMemberIfNeedsTreatment(context, structure, member)$}$
|
||||
$if(structure.ReferenceFromNonDefaultNormalBlockExists || structure.IsAsset)$
|
||||
$if(structure.IsAsset)$
|
||||
|
||||
m_stream->PopBlock();
|
||||
$endif$
|
||||
|
Reference in New Issue
Block a user