{%- assign NewLine = newline_to_br -%} {{ Indent2 }}struct {{ Name }}_Static_{{MetaName}} { {{ Indent2 }} consteval static auto __StaticFields() { {{ Indent2 }} return std::make_tuple({% for field in FieldList %}&{{Name}}::{{field.Name}}{% unless forloop.last %}, {% endunless %}{% endfor %}); {{ Indent2 }} }; {{ NewLine }} {{ Indent2 }} consteval static auto __MakeStaticFields() { {{ Indent2 }} return std::array{ {{ NewLine }} {%- for field in FieldList -%} {{ NewLine }} {%- if field.IsMethod -%} {{ Indent2 }} refl::StaticMethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}), {{ NewLine }} {%- else -%} {{ Indent2 }} refl::StaticMemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), {{field.Meta}}), {{ NewLine }} {%- endif -%} {{ NewLine }} {%- endfor -%} {{ Indent2 }} }; {{ Indent2 }} }; {{ NewLine }} {{ Indent2 }} consteval static int Size() { {{ Indent2 }} return refl::fetch_meta_size<{{ Name }}_Static_{{MetaName}}>(); {{ Indent2 }} }; {{ Indent2 }}}; {{ NewLine }} {{ Indent2 }}struct {{ Name }}_{{MetaName}} : public refl::Meta { {{ Indent2 }} using MyStatic = {{ Name }}_Static_{{MetaName}}; {{ Indent2 }} using MyUClass = refl::UClass_Meta<{{ Name }}, {{ ParentName }}>;; {{ Indent2 }} inline static char s_data[MyStatic::Size()]{}; {{ Indent2 }} static auto __MakeFields() { {{ Indent2 }} char* memory = &s_data[0]; {{ Indent2 }} return std::array{ {{ NewLine }} {%- for field in FieldList -%} {{ NewLine }} {%- if field.IsMethod -%} {{ Indent2 }} MethodField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}), {{ NewLine }} {%- else -%} {{ Indent2 }} MemberField(&{{Name}}::{{field.Name}}, FName("{{field.Name}}"), memory, {{field.Meta}}), {{ NewLine }} {%- endif -%} {{ NewLine }} {%- endfor -%} {{ Indent2 }} }; {{ Indent2 }} }; {{ Indent2 }}}; {{ NewLine }}