37 template<
typename COMPONENT_TYPE>
57template<
typename TYPE>
64template<
typename TYPE, std::
size_t i = 0>
68 if constexpr (i < TYPE::Traits::num_fields)
77 using field_tuple =
typename TYPE::Traits::field_types;
78 using field_type =
typename std::tuple_element<i, field_tuple>::type;
82 ImGui::TableSetColumnIndex(0);
83 ImGui::AlignTextToFramePadding();
85 if (TYPE::Traits::field_descriptions[i] !=
nullptr)
87 if (ImGui::IsItemHovered(ImGuiHoveredFlags_AllowWhenDisabled))
89 if (ImGui::BeginTooltip())
91 ImGui::TextDisabled(TYPE::Traits::field_typenames[i]);
92 ImGui::Text(TYPE::Traits::field_descriptions[i]);
97 ImGui::TableSetColumnIndex(1);
100 if constexpr (i < TYPE::Traits::num_fields - 1)
102 ImGui::TableNextRow();
112template<
typename TYPE>
116 if constexpr (
requires { &TYPE::Traits::num_fields; })
118 if constexpr (TYPE::Traits::num_fields > 0 && !std::is_enum<TYPE>())
152template<
typename COMPONENT_TYPE>
Util::Array< DrawFunc > inspectors
Definition componentinspection.h:51
ComponentInspection()
Definition componentinspection.cc:77
void(*)(Game::Entity, Game::ComponentId, void *, bool *) DrawFunc
Definition componentinspection.h:32
static void Register(ComponentId component)
Definition componentinspection.h:154
static ComponentInspection * Singleton
Definition componentinspection.h:49
bool debug
Definition componentinspection.h:43
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
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:63
Nebula's dynamic array class.
Definition array.h:61
void Fill(IndexT first, SizeT num, const TYPE &elm)
fill array range with element
Definition array.h:1447
const SizeT Capacity() const
get overall allocated size of array in number of elements
Definition array.h:933
void Grow()
grow array with grow value
Definition array.h:600
void Resize(SizeT num)
Set size. Grows array if num is greater than capacity. Calls destroy on all objects at index > num!
Definition array.h:1682
const SizeT Size() const
get number of elements in array
Definition array.h:913
Nebula's universal string class.
Definition string.h:50
void Capitalize()
convert first char of string to upper case
Definition string.cc:959
const char * AsCharPtr() const
return contents as character pointer
Definition string.h:577
void CamelCaseToWords()
insert spaces before each capital letter in the string.
Definition string.cc:969
#define n_assert(exp)
Definition debug.h:58
Resolves local hierarchical transforms into the mandatory world transform components.
Definition graphicsmanager.h:66
MemDb::AttributeId ComponentId
Definition componentid.h:15
void ComponentDrawFuncT< int64_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:182
void ComponentDrawFuncT< Util::Color >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:444
void ComponentDrawFuncT< Math::vec4 >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:349
void ComponentDrawFuncT< Game::Position >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:375
void ComponentDrawFuncT< uint16_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:212
void ComponentDrawFuncT< Game::Entity >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:95
void ComponentDrawFuncT< int16_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:229
void ComponentDrawFuncT< Math::mat4 >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:317
void ComponentDrawFuncT< Math::vec3 >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:336
void ComponentDrawFuncT< Util::StringAtom >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:277
void(*) StringAtomComponentDrawOverride(Game::Entity, ComponentId, void *, bool *)
Definition componentinspection.cc:271
void ComponentDrawFuncT< uint64_t >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:246
void ComponentDrawFuncT< Game::Orientation >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:392
void ComponentDrawFuncT< int >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:169
void ComponentDrawFuncT< Math::quat >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:362
void ComponentDrawFuncT< uint >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:195
void ComponentDrawFuncT< Game::Scale >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:409
void ComponentDrawFuncT< bool >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:156
void ComponentDrawFuncT(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.h:114
void InspectorDrawField(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.h:66
void ComponentDrawFuncT< float >(Game::Entity owner, ComponentId component, void *data, bool *commit)
Definition componentinspection.cc:263
An entity is essentially just an Id with some utility functions attached.
Definition entity.h:35
int IndexT
Definition types.h:41