14untyped_component&
member(flecs::entity_t type_id, flecs::entity_t unit,
const char *name, int32_t count = 0,
size_t offset = 0) {
17 desc.
add[0] = ecs_pair(flecs::ChildOf, m_id);
19 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
27 m.offset =
static_cast<int32_t
>(offset);
35 return member(
type_id, 0, name, count, offset);
39template <
typename MemberType>
42 return member(
type_id, name, count, offset);
46template <
typename MemberType>
49 return member(
type_id, unit, name, count, offset);
53template <
typename MemberType,
typename UnitType>
57 return member(
type_id, unit_id, name, count, offset);
61template <typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
64 size_t offset =
reinterpret_cast<size_t>(&(
static_cast<ComponentType*
>(
nullptr)->*ptr));
65 return member(
type_id, name, std::extent<MemberType>::value, offset);
69template <typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
72 size_t offset =
reinterpret_cast<size_t>(&(
static_cast<ComponentType*
>(
nullptr)->*ptr));
73 return member(
type_id, unit, name, std::extent<MemberType>::value, offset);
77template <typename UnitType, typename MemberType, typename ComponentType, typename RealType = typename std::remove_extent<MemberType>::type>
81 size_t offset =
reinterpret_cast<size_t>(&(
static_cast<ComponentType*
>(
nullptr)->*ptr));
82 return member(
type_id, unit_id, name, std::extent<MemberType>::value, offset);
91 desc.
add[0] = ecs_pair(flecs::ChildOf, m_id);
93 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
96 ecs_pair(flecs::Constant, flecs::I32),
sizeof(int32_t),
108 desc.
add[0] = ecs_pair(flecs::ChildOf, m_id);
110 ecs_assert(eid != 0, ECS_INTERNAL_ERROR, NULL);
113 ecs_pair(flecs::Constant, flecs::U32),
sizeof(uint32_t),
145 mr->warning.min = min;
146 mr->warning.max = max;
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.
ecs_id_t ecs_entity_t
An entity identifier.
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.
Component added to member entities.
Used with ecs_entity_init.
const char * name
Name of the entity.
ecs_id_t add[(32)]
Array of ids to add to the new or existing entity.
Element type of members vector in EcsStruct.
T * get_mut() const
Get mutable component value.
void modified() const
Signal that component was modified.