![]() |
Flecs v4.0
A fast entity component system (ECS) for C & C++
|
Functions for getting/setting components. More...
Functions | |
const void * | ecs_get_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id) |
Get an immutable pointer to a component. | |
void * | ecs_get_mut_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id) |
Get a mutable pointer to a component. | |
void * | ecs_ensure_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id) |
Get a mutable pointer to a component. | |
void * | ecs_ensure_modified_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id) |
Combines ensure + modified in single operation. | |
ecs_ref_t | ecs_ref_init_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id) |
Create a component ref. | |
void * | ecs_ref_get_id (const ecs_world_t *world, ecs_ref_t *ref, ecs_id_t id) |
Get component from ref. | |
void | ecs_ref_update (const ecs_world_t *world, ecs_ref_t *ref) |
Update ref. | |
void * | ecs_emplace_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id, bool *is_new) |
Emplace a component. | |
void | ecs_modified_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id) |
Signal that a component has been modified. | |
void | 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. | |
Functions for getting/setting components.
void * ecs_emplace_id | ( | ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id, | ||
bool * | is_new ) |
Emplace a component.
Emplace is similar to ecs_ensure_id() except that the component constructor is not invoked for the returned pointer, allowing the component to be constructed directly in the storage.
When the is_new
parameter is not provided, the operation will assert when the component already exists. When the is_new
parameter is provided, it will indicate whether the returned storage has been constructed.
When is_new
indicates that the storage has not yet been constructed, it must be constructed by the code invoking this operation. Not constructing the component will result in undefined behavior.
world | The world. |
entity | The entity. |
id | The component to obtain. |
is_new | Whether this is an existing or new component. |
void * ecs_ensure_id | ( | ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id ) |
Get a mutable pointer to a component.
This operation returns a mutable pointer to a component. If the component did not yet exist, it will be added.
If ensure is called when the world is in deferred/readonly mode, the function will:
world | The world. |
entity | The entity. |
id | The entity id of the component to obtain. |
void * ecs_ensure_modified_id | ( | ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id ) |
Combines ensure + modified in single operation.
This operation is a more efficient alternative to calling ecs_ensure_id() and ecs_modified_id() separately. This operation is only valid when the world is in deferred mode, which ensures that the Modified event is not emitted before the modification takes place.
world | The world. |
entity | The entity. |
id | The id of the component to obtain. |
const void * ecs_get_id | ( | const ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id ) |
Get an immutable pointer to a component.
This operation obtains a const pointer to the requested component. The operation accepts the component entity id.
This operation can return inherited components reachable through an IsA
relationship.
world | The world. |
entity | The entity. |
id | The id of the component to get. |
void * ecs_get_mut_id | ( | const ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id ) |
Get a mutable pointer to a component.
This operation obtains a mutable pointer to the requested component. The operation accepts the component entity id.
Unlike ecs_get_id(), this operation does not return inherited components.
world | The world. |
entity | The entity. |
id | The id of the component to get. |
void ecs_modified_id | ( | ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id ) |
Signal that a component has been modified.
This operation is usually used after modifying a component value obtained by ecs_ensure_id(). The operation will mark the component as dirty, and invoke OnSet observers and hooks.
world | The world. |
entity | The entity. |
id | The id of the component that was modified. |
void * ecs_ref_get_id | ( | const ecs_world_t * | world, |
ecs_ref_t * | ref, | ||
ecs_id_t | id ) |
Get component from ref.
Get component pointer from ref. The ref must be created with ecs_ref_init().
world | The world. |
ref | The ref. |
id | The component id. |
ecs_ref_t ecs_ref_init_id | ( | const ecs_world_t * | world, |
ecs_entity_t | entity, | ||
ecs_id_t | id ) |
Create a component ref.
A ref is a handle to an entity + component which caches a small amount of data to reduce overhead of repeatedly accessing the component. Use ecs_ref_get() to get the component data.
world | The world. |
entity | The entity. |
id | The id of the component. |
void ecs_ref_update | ( | const ecs_world_t * | world, |
ecs_ref_t * | ref ) |
Update ref.
Ensures contents of ref are up to date. Same as ecs_ref_get_id(), but does not return pointer to component id.
world | The world. |
ref | The ref. |
void 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.
This operation allows an application to set the value of a component. The operation is equivalent to calling ecs_ensure_id() followed by ecs_modified_id(). The operation will not modify the value of the passed in component. If the component has a copy hook registered, it will be used to copy in the component.
If the provided entity is 0, a new entity will be created.
world | The world. |
entity | The entity. |
id | The id of the component to set. |
size | The size of the pointed-to value. |
ptr | The pointer to the value. |