Flecs v3.2
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
untyped_component.inl
Go to the documentation of this file.
1
14untyped_component& member(flecs::entity_t type_id, const char *name, int32_t count = 0, size_t offset = 0) {
15 ecs_entity_desc_t desc = {};
16 desc.name = name;
17 desc.add[0] = ecs_pair(flecs::ChildOf, m_id);
18 ecs_entity_t eid = ecs_entity_init(m_world, &desc);
19 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
20
21 flecs::entity e(m_world, eid);
22
23 Member m = {};
24 m.type = type_id;
25 m.count = count;
26 m.offset = static_cast<int32_t>(offset);
27 e.set<Member>(m);
28
29 return *this;
30}
31
33untyped_component& member(flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count = 0, size_t offset = 0) {
34 ecs_entity_desc_t desc = {};
35 desc.name = name;
36 desc.add[0] = ecs_pair(flecs::ChildOf, m_id);
37 ecs_entity_t eid = ecs_entity_init(m_world, &desc);
38 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
39
40 flecs::entity e(m_world, eid);
41
42 Member m = {};
43 m.type = type_id;
44 m.unit = unit;
45 m.count = count;
46 m.offset = static_cast<int32_t>(offset);
47 e.set<Member>(m);
48
49 return *this;
50}
51
53template <typename MemberType>
54untyped_component& member(const char *name, int32_t count = 0, size_t offset = 0) {
55 flecs::entity_t type_id = _::cpp_type<MemberType>::id(m_world);
56 return member(type_id, name, count, offset);
57}
58
60template <typename MemberType>
61untyped_component& member(flecs::entity_t unit, const char *name, int32_t count = 0, size_t offset = 0) {
62 flecs::entity_t type_id = _::cpp_type<MemberType>::id(m_world);
63 return member(type_id, unit, name, count, offset);
64}
65
67template <typename MemberType, typename UnitType>
68untyped_component& member(const char *name, int32_t count = 0, size_t offset = 0) {
69 flecs::entity_t type_id = _::cpp_type<MemberType>::id(m_world);
70 flecs::entity_t unit_id = _::cpp_type<UnitType>::id(m_world);
71 return member(type_id, unit_id, name, count, offset);
72}
73
75untyped_component& constant(const char *name, int32_t value) {
76 ecs_add_id(m_world, m_id, _::cpp_type<flecs::Enum>::id(m_world));
77
78 ecs_entity_desc_t desc = {};
79 desc.name = name;
80 desc.add[0] = ecs_pair(flecs::ChildOf, m_id);
81 ecs_entity_t eid = ecs_entity_init(m_world, &desc);
82 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
83
84 ecs_set_id(m_world, eid,
85 ecs_pair(flecs::Constant, flecs::I32), sizeof(int32_t),
86 &value);
87
88 return *this;
89}
90
92untyped_component& bit(const char *name, uint32_t value) {
93 ecs_add_id(m_world, m_id, _::cpp_type<flecs::Bitmask>::id(m_world));
94
95 ecs_entity_desc_t desc = {};
96 desc.name = name;
97 desc.add[0] = ecs_pair(flecs::ChildOf, m_id);
98 ecs_entity_t eid = ecs_entity_init(m_world, &desc);
99 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
100
101 ecs_set_id(m_world, eid,
102 ecs_pair(flecs::Constant, flecs::U32), sizeof(uint32_t),
103 &value);
104
105 return *this;
106}
107
109untyped_component& range(double min, double max) {
110 const flecs::member_t *m = ecs_cpp_last_member(m_world, m_id);
111 if (!m) {
112 return *this;
113 }
114
115 flecs::world w(m_world);
116 flecs::entity me = w.entity(m->member);
118 mr->value.min = min;
119 mr->value.max = max;
121 return *this;
122}
123
125untyped_component& warning_range(double min, double max) {
126 const flecs::member_t *m = ecs_cpp_last_member(m_world, m_id);
127 if (!m) {
128 return *this;
129 }
130
131 flecs::world w(m_world);
132 flecs::entity me = w.entity(m->member);
134 mr->warning.min = min;
135 mr->warning.max = max;
137 return *this;
138}
139
141untyped_component& error_range(double min, double max) {
142 const flecs::member_t *m = ecs_cpp_last_member(m_world, m_id);
143 if (!m) {
144 return *this;
145 }
146
147 flecs::world w(m_world);
148 flecs::entity me = w.entity(m->member);
150 mr->error.min = min;
151 mr->error.max = max;
153 return *this;
154}
155
156
flecs::entity_t type_id()
Get id currently assigned to component.
void ecs_add_id(ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
Add a (component) id to an entity.
#define ecs_assert(condition, error_code,...)
Assert.
Definition log.h:352
ecs_id_t ecs_entity_t
An entity identifier.
Definition flecs.h:282
untyped_component & member(const char *name, int32_t count=0, size_t offset=0)
Add member.
untyped_component & member(flecs::entity_t type_id, const char *name, int32_t count=0, size_t offset=0)
Add member.
untyped_component & constant(const char *name, int32_t value)
Add constant.
untyped_component & warning_range(double min, double max)
Add member warning range.
untyped_component & member(const char *name, int32_t count=0, size_t offset=0)
Add member with unit.
untyped_component & range(double min, double max)
Add member value range.
untyped_component & bit(const char *name, uint32_t value)
Add bitmask constant.
untyped_component & error_range(double min, double max)
Add member error range.
untyped_component & member(flecs::entity_t unit, const char *name, int32_t count=0, size_t offset=0)
Add member with unit.
untyped_component & member(flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count=0, size_t offset=0)
Add member with unit.
flecs::entity entity(Args &&... args) const
Create an entity.
ecs_entity_t ecs_entity_init(ecs_world_t *world, const ecs_entity_desc_t *desc)
Find or create an entity.
ecs_entity_t ecs_set_id(ecs_world_t *world, ecs_entity_t entity, ecs_id_t id, size_t size, const void *ptr)
Set the value of a component.
Component added to member entities to express valid value ranges.
Definition meta.h:203
Component added to member entities.
Definition meta.h:189
Used with ecs_entity_init.
Definition flecs.h:763
const char * name
Name of the entity.
Definition flecs.h:768
ecs_id_t add[(32)]
Array of ids to add to the new or existing entity.
Definition flecs.h:794
Element type of members vector in EcsStruct.
Definition meta.h:210
Entity.
Definition entity.hpp:30
T * get_mut() const
Get mutable component value.
Definition entity.hpp:92
void modified() const
Signal that component was modified.
Definition entity.hpp:170
Untyped component class.
The world.
Definition world.hpp:113