53template<
typename TYPE>
57template<
typename TYPE, std::
size_t i = 0>
61 if constexpr (i < TYPE::Traits::num_fields)
70 using field_tuple =
typename TYPE::Traits::field_types;
71 using field_type =
typename std::tuple_element<i, field_tuple>::type;
75 ImGui::TableSetColumnIndex(0);
76 ImGui::AlignTextToFramePadding();
78 if (TYPE::Traits::field_descriptions[i] !=
nullptr)
80 if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
82 if (ImGui::BeginTooltip())
84 ImGui::TextDisabled(TYPE::Traits::field_typenames[i]);
85 ImGui::Text(TYPE::Traits::field_descriptions[i]);
90 ImGui::TableSetColumnIndex(1);
93 if constexpr (i < TYPE::Traits::num_fields - 1)
95 ImGui::TableNextRow();
105template<
typename TYPE>
109 if constexpr (
requires { &TYPE::Traits::num_fields; })
111 if constexpr (TYPE::Traits::num_fields > 0 && !std::is_enum<TYPE>())
Util::Array< DrawFunc > inspectors
Definition componentinspection.h:50
ComponentInspection()
Definition componentinspection.cc:96
void(*)(Game::Entity, Game::ComponentId, void *, bool *) DrawFunc
Definition componentinspection.h:32
static ComponentInspection * Singleton
Definition componentinspection.h:48
static void Register(ComponentId component, DrawFunc)
Definition componentinspection.cc:63
bool debug
Definition componentinspection.h:42
static void Destroy()
This static method is used to destroy the registry object and should be called right before the main ...
Definition componentinspection.cc:50
~ComponentInspection()
Definition componentinspection.cc:104
static ComponentInspection * Instance()
The registry's constructor is called by the Instance() method, and nobody else.
Definition componentinspection.cc:31
static void DrawInspector(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:82
Nebula's dynamic array class.
Definition array.h:60
Game::EditorState.
Definition graphicsmanager.h:67
MemDb::AttributeId ComponentId
Definition componentid.h:15
void ComponentDrawFuncT< int64_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:201
void ComponentDrawFuncT< Util::Color >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:452
void ComponentDrawFuncT< Math::vec4 >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:357
void ComponentDrawFuncT< Game::Position >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:383
void ComponentDrawFuncT< uint16_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:231
void ComponentDrawFuncT< Game::Entity >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:114
void ComponentDrawFuncT< int16_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:248
void ComponentDrawFuncT< Math::mat4 >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:325
void ComponentDrawFuncT< Math::vec3 >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:344
void ComponentDrawFuncT< Util::StringAtom >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:295
void ComponentDrawFuncT< uint64_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:265
void ComponentDrawFuncT< Game::Orientation >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:400
void ComponentDrawFuncT< int >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:188
void ComponentDrawFuncT< Math::quat >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:370
void ComponentDrawFuncT< uint >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:214
void ComponentDrawFuncT< Game::Scale >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:417
void ComponentDrawFuncT< bool >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:175
void ComponentDrawFuncT(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.h:107
void InspectorDrawField(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.h:59
void ComponentDrawFuncT< float >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:282
An entity is essentially just an Id with some utility functions attached.
Definition entity.h:35
Nebula's universal string class.
Definition String.cs:8
void CamelCaseToWords()
insert spaces before each capital letter in the string.
Definition string.cc:941
void Capitalize()
convert first char of string to upper case
Definition string.cc:931
const char * AsCharPtr() const
return contents as character pointer
Definition string.h:546