Flecs v3.1
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
untyped_component.inl
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
flecs::entity_t type_id()
Get id currently assigned to component.
Definition: component.hpp:506
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:219
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 & member(const char *name, int32_t count=0, size_t offset=0)
Add member with unit.
untyped_component & bit(const char *name, uint32_t value)
Add bitmask constant.
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.
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.
Used with ecs_entity_init.
Definition: flecs.h:696
const char * name
Name of the entity.
Definition: flecs.h:701
ecs_id_t add[(32)]
Array of ids to add to the new or existing entity.
Definition: flecs.h:727
Entity.
Definition: entity.hpp:30
Untyped component class.
Definition: component.hpp:330