76 {
78 FieldMeta meta;
79 for (auto&& opt : options) {
80 if (std::holds_alternative<FlattenTag>(opt)) {
81 meta.flatten = true;
82 }
83 else if (std::holds_alternative<DisplayNameTag>(opt)) {
84 meta.displayName = std::get<DisplayNameTag>(opt).value;
85 }
86 else if (std::holds_alternative<TooltipTag>(opt)) {
87 meta.tooltip = std::get<TooltipTag>(opt).text;
88 }
89 else if (std::holds_alternative<ReadOnlyTag>(opt)) {
90 meta.readOnly = true;
91 }
92 else if (std::holds_alternative<ColorTag>(opt)) {
93 meta.isColor = true;
94 }
95 }
96
98
99#ifdef EE_REGISTRY_LOG
100 EE_TRACE(
" --> Exposed field : %s flatten=%d displayName=%s", cleanedName.c_str(), meta.flatten, meta.displayName.c_str());
101#endif
102
104 std::string typeName = typeid(FieldType).name();
105 size_t offset = reinterpret_cast<size_t>(&(reinterpret_cast<Class const volatile*>(0)->*member));
106
107 ComponentField field;
108 if (customFields.find(typeName) != customFields.end())
109 {
110 field = ComponentField(cleanedName,
EngineDataType::Custom, offset, meta.displayName, customFields[typeName]);
111 field.flatten = meta.flatten;
112 }
113 else
114 {
115 field = ComponentField(cleanedName, type, offset, meta.displayName);
116 }
117 field.isColor = meta.isColor;
118 field.tooltip = meta.tooltip;
119 field.readOnly = meta.readOnly;
121 }
static std::map< std::string, std::vector< ComponentField > > & GetCustomComponentFields()
static std::vector< ComponentField > & CompilationClassFieldStack()