eliminate ad-hoc meta eval info type tables; switch to base layer meta type info; do first pass of shifting serialization of meta evals to meta type info driven system

This commit is contained in:
Ryan Fleury
2024-09-18 15:57:01 -07:00
parent 7e5759ed03
commit 546e6e695f
16 changed files with 290 additions and 465 deletions
-66
View File
@@ -1,72 +1,6 @@
// Copyright (c) 2024 Epic Games Tools
// Licensed under the MIT license (https://opensource.org/license/mit/)
////////////////////////////////
//~ rjf: Meta Evaluation Type Information
@table(name info_type eval_type dynamic_kind)
CTRL_MetaEvalMemberTable:
{
{enabled S32 S32 }
{frozen S32 S32 }
{hit_count U64 U64 }
{id U64 U64 }
{color U32 U32 }
{label String8 U64 String8 }
{location String8 U64 String8 }
{condition String8 U64 String8 }
{callstack CTRL_MetaEvalFrameArray U64 FrameArray }
}
@struct CTRL_MetaEvalFrameArray:
{
`U64 *frames`;
`U64 count`;
}
@enum CTRL_MetaEvalDynamicKind:
{
Null,
String8,
FrameArray,
COUNT
}
@struct CTRL_MetaEvalInfo:
{
@expand(CTRL_MetaEvalMemberTable a) `$(a.info_type) $(a.name)`
}
@struct CTRL_MetaEval:
{
@expand(CTRL_MetaEvalMemberTable a) `$(a.eval_type) $(a.name)`
}
@data(String8) ctrl_meta_eval_member_name_table:
{
@expand(CTRL_MetaEvalMemberTable a) `str8_lit_comp("$(a.name)")`
}
@data(Rng1U64) ctrl_meta_eval_info_member_range_table:
{
@expand(CTRL_MetaEvalMemberTable a) `{OffsetOf(CTRL_MetaEvalInfo, $(a.name)), OffsetOf(CTRL_MetaEvalInfo, $(a.name)) + sizeof($(a.info_type))}`
}
@data(Rng1U64) ctrl_meta_eval_member_range_table:
{
@expand(CTRL_MetaEvalMemberTable a) `{OffsetOf(CTRL_MetaEval, $(a.name)), OffsetOf(CTRL_MetaEval, $(a.name)) + sizeof($(a.eval_type))}`
}
@data(E_TypeKind) ctrl_meta_eval_member_type_kind_table:
{
@expand(CTRL_MetaEvalMemberTable a) `E_TypeKind_$(a.eval_type)`
}
@data(CTRL_MetaEvalDynamicKind) ctrl_meta_eval_member_dynamic_kind_table:
{
@expand(CTRL_MetaEvalMemberTable a) `$(a.dynamic_kind != '' -> 'CTRL_MetaEvalDynamicKind_'..a.dynamic_kind)$(a.dynamic_kind == '' -> 'CTRL_MetaEvalDynamicKind_Null')`
}
////////////////////////////////
//~ rjf: Entity Kinds