16untyped_component& internal_member(
17 flecs::entity_t type_id,
22 bool use_offset =
false)
29 m.
offset =
static_cast<int32_t
>(offset);
41 flecs::entity_t type_id,
46 return internal_member(type_id, unit, name, count, 0,
false);
51 flecs::entity_t type_id,
57 return internal_member(type_id, unit, name, count, offset,
true);
62 flecs::entity_t type_id,
66 return member(type_id, 0, name, count);
71 flecs::entity_t type_id,
76 return member(type_id, 0, name, count, offset);
80template <
typename MemberType>
86 return member(type_id, name, count);
90template <
typename MemberType>
97 return member(type_id, name, count, offset);
101template <
typename MemberType>
103 flecs::entity_t unit,
108 return member(type_id, unit, name, count);
112template <
typename MemberType>
114 flecs::entity_t unit,
120 return member(type_id, unit, name, count, offset);
124template <
typename MemberType,
typename UnitType>
131 return member(type_id, unit_id, name, count);
135template <
typename MemberType,
typename UnitType>
143 return member(type_id, unit_id, name, count, offset);
147template <
typename MemberType,
typename ComponentType,
148 typename RealType =
typename std::remove_extent<MemberType>::type>
151 const MemberType ComponentType::* ptr)
154 size_t offset =
reinterpret_cast<size_t>(&(
static_cast<ComponentType*
>(
nullptr)->*ptr));
155 return member(type_id, name, std::extent<MemberType>::value, offset);
159template <
typename MemberType,
typename ComponentType,
160 typename RealType =
typename std::remove_extent<MemberType>::type>
162 flecs::entity_t unit,
164 const MemberType ComponentType::* ptr)
167 size_t offset =
reinterpret_cast<size_t>(&(
static_cast<ComponentType*
>(
nullptr)->*ptr));
168 return member(type_id, unit, name, std::extent<MemberType>::value, offset);
172template <
typename UnitType,
typename MemberType,
typename ComponentType,
173 typename RealType =
typename std::remove_extent<MemberType>::type>
176 const MemberType ComponentType::* ptr)
180 size_t offset =
reinterpret_cast<size_t>(&(
static_cast<ComponentType*
>(
nullptr)->*ptr));
181 return member(type_id, unit_id, name, std::extent<MemberType>::value, offset);
185template <
typename T =
int32_t>
196 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
206template <
typename T = u
int32_t>
217 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
227template <
typename Elem>
234 desc.
count = elem_count;
void ecs_add_id(ecs_world_t *world, ecs_entity_t entity, ecs_id_t component)
Add a (component) id to an entity.
#define ecs_assert(condition, error_code,...)
Assert.
ecs_id_t ecs_entity_t
An entity identifier.
flecs::entity entity(Args &&... args) const
Create an entity.
flecs::id id(E value) const
Convert enum constant to entity.
ecs_entity_t ecs_entity_init(ecs_world_t *world, const ecs_entity_desc_t *desc)
Find or create an entity.
void * ecs_ensure_id(ecs_world_t *world, ecs_entity_t entity, ecs_id_t component, size_t size)
Ensure entity has component, return pointer.
void ecs_set_id(ecs_world_t *world, ecs_entity_t entity, ecs_id_t component, size_t size, const void *ptr)
Set the value of a component.
Component added to member entities to express valid value ranges.
ecs_member_value_range_t warning
Member value warning range.
ecs_member_value_range_t value
Member value range.
ecs_member_value_range_t error
Member value error range.
Used with ecs_array_init().
ecs_entity_t entity
Existing entity to use for type (optional).
ecs_entity_t type
Element type.
int32_t count
Number of elements.
Used with ecs_entity_init().
const char * name
Name of the entity.
ecs_entity_t parent
Parent entity.
Element type of members vector in EcsStruct.
ecs_member_value_range_t warning_range
Numerical range outside of which the value represents an warning.
const char * name
Must be set when used with ecs_struct_desc_t.
bool use_offset
Set to true to prevent automatic offset computation.
ecs_entity_t type
Member type.
ecs_entity_t member
Should not be set by ecs_struct_desc_t.
int32_t offset
May be set when used with ecs_struct_desc_t.
ecs_entity_t unit
May be set when used with ecs_struct_desc_t, will be auto-populated if type entity is also a unit.
ecs_member_value_range_t range
Numerical range that specifies which values member can assume.
int32_t count
Element count (for inline arrays).
ecs_member_value_range_t error_range
Numerical range outside of which the value represents an error.
double min
Min member value.
double max
Max member value.
void modified() const
Signal that component was modified.