Skip to content
Flecs v4.1

Entity. More...

#include <entity.hpp>

Public Member Functions

 entity ()
 Default constructor.
 entity (const flecs::world_t *world, flecs::entity_t id)
 Wrap an existing entity ID.
 entity (world_t *world)
 Create a new entity.
 entity (world_t *world, const char *name, const char *sep="::", const char *root_sep="::")
 Create a named entity.
 entity (world_t *world, flecs::entity_t parent, const char *name, const char *sep="::", const char *root_sep="::")
 Create a named entity for a parent using ChildOf hierarchy storage.
 entity (world_t *world, const flecs::Parent &parent, const char *name=nullptr)
 Create a named entity for a parent using Parent hierarchy storage.
 entity (entity_t id)
 Conversion from flecs::entity_t to flecs::entity.
template<typename... T, typename... Args>
decltype(auto) ensure (Args... args) const
template<typename Second>
Second & ensure_second (entity_t first) const
template<typename... T, typename... Args>
void modified (Args... args) const
template<typename T, if_t< is_actual< T >::value > = 0>
ref< T > get_ref_w_id (flecs::id_t component) const
 Get reference to component specified by component ID.
template<typename... T, typename... Args>
auto get_ref (Args... args) const
template<typename Second>
ref< Second > get_ref_second (flecs::entity_t first) const
void clear () const
 Clear an entity.
void destruct () const
 Delete an entity.
void set_child_order (flecs::entity_t *children, int32_t child_count) const
 Set child order.
flecs::entity_view view () const
 Return the entity as an entity_view.
const char * from_json (const char *json)
 Deserialize an entity from JSON.
const char * from_json (const char *json)
 Deserialize an entity from JSON.
Public Member Functions inherited from flecs::entity_builder< entity >
const entityset_doc_name (const char *name) const
 Set human-readable name.
const entityset_doc_brief (const char *brief) const
 Set brief description.
const entityset_doc_detail (const char *detail) const
 Set detailed description.
const entityset_doc_link (const char *link) const
 Set link to external documentation.
const entityset_doc_color (const char *color) const
 Set doc color.
const entityset_doc_uuid (const char *uuid) const
 Set doc UUID.
const entityobserve (flecs::entity_t evt, Func &&callback) const
 Observe an event on an entity.
const entityobserve (Func &&callback) const
 Observe an event on an entity.
const entityobserve (Func &&callback) const
 Observe an event on an entity.
const entityset_json (flecs::id_t e, const char *json, flecs::from_json_desc_t *desc=nullptr) const
 Set a component from JSON.
const entityset_json (flecs::entity_t r, flecs::entity_t t, const char *json, flecs::from_json_desc_t *desc=nullptr) const
 Set a pair from JSON.
const entityset_json (const char *json, flecs::from_json_desc_t *desc=nullptr) const
 Set a component from JSON.
const entityset_json (const char *json, flecs::from_json_desc_t *desc=nullptr) const
 Set a pair from JSON.
const entityset_json (flecs::entity_t t, const char *json, flecs::from_json_desc_t *desc=nullptr) const
 Set a pair from JSON.
const entityset_json_second (flecs::entity_t r, const char *json, flecs::from_json_desc_t *desc=nullptr) const
 Set a pair from JSON.
 entity_view ()
 Default constructor.
 entity_view (flecs::world_t *world, flecs::id_t id)
 Wrap an existing entity ID.
 entity_view (entity_t id)
 Implicit conversion from flecs::entity_t to flecs::entity_view.
const entityadd (Args... args) const
const entityadd_second (flecs::entity_t first) const
const entityadd_if (bool cond, flecs::id_t component) const
 Conditional add.
const entityis_a (entity_t second) const
 Shortcut for add(IsA, entity).
const entitychild_of (entity_t second) const
 Shortcut for add(ChildOf, entity).
const entitydepends_on (entity_t second) const
 Shortcut for add(DependsOn, entity).
const entityremove (Args... args) const
const entityremove_second (flecs::entity_t first) const
const entityauto_override (Args... args) const
const entityauto_override_second (flecs::entity_t first) const
const entityset_auto_override (A &&value) const
const entityemplace_auto_override (Args &&... args) const
const entityenable () const
 Enable an entity.
const entitydisable () const
 Disable an entity.
const entityset_ptr (entity_t comp, size_t size, const void *ptr) const
const entityset (A &&value) const
const entityset_second (entity_t first, Second &&value) const
const entityassign (A &&value) const
const entityassign_second (entity_t first, Second &&value) const
const entityinsert (const Func &func) const
 Set 1..N components.
const entityemplace (Args &&... args) const
const entityemplace_first (flecs::entity_t second, Args &&... args) const
const entityemplace_second (flecs::entity_t first, Args &&... args) const
const entityscope (const Func &func) const
 The function will be run with the scope set to the current entity.
const entityset_name (const char *name) const
 Set the entity name.
const entityset_alias (const char *name) const
 Set the entity alias.
const entityunit (const char *symbol, flecs::entity_t prefix=0, flecs::entity_t base=0, flecs::entity_t over=0, int32_t factor=0, int32_t power=0) const
 Make an entity a unit.
Public Member Functions inherited from flecs::entity_view
 entity_view ()
 Default constructor.
 entity_view (flecs::world_t *world, flecs::id_t id)
 Wrap an existing entity ID.
 entity_view (entity_t id)
 Implicit conversion from flecs::entity_t to flecs::entity_view.
entity_t id () const
 Get entity ID.
bool is_valid () const
 Check if entity is valid.
 operator bool () const
 Conversion to bool.
bool is_alive () const
 Check if entity is alive.
flecs::string_view name () const
 Return the entity name.
flecs::string_view symbol () const
 Return the entity symbol.
flecs::string path (const char *sep="::", const char *init_sep="::") const
 Return the entity path.
flecs::string path_from (flecs::entity_t parent, const char *sep="::", const char *init_sep="::") const
 Return the entity path relative to a parent.
template<typename Parent>
flecs::string path_from (const char *sep="::", const char *init_sep="::") const
 Return the entity path relative to a typed parent.
bool enabled () const
 Check if entity is enabled (does not have the Disabled tag).
flecs::type type () const
 Get the entity's type.
flecs::table table () const
 Get the entity's table.
flecs::table_range range () const
 Get table range for the entity.
template<typename Func>
void each (const Func &func) const
 Iterate (component) IDs of an entity.
template<typename Func>
void each (flecs::id_t first, flecs::id_t second, const Func &func) const
 Iterate matching pair IDs of an entity.
template<typename Func>
void each (const flecs::entity_view &rel, const Func &func) const
 Iterate targets for a given relationship.
template<typename First, typename Func>
void each (const Func &func) const
 Iterate targets for a given relationship.
template<typename Func>
void children (flecs::entity_t rel, Func &&func) const
 Iterate children for an entity.
template<typename Rel, typename Func>
void children (Func &&func) const
 Iterate children for an entity.
template<typename Func>
void children (Func &&func) const
 Iterate children for an entity.
template<typename... T, typename... Args>
decltype(auto) try_get (Args... args) const
template<typename... T, typename... Args>
decltype(auto) try_get_second (Args... args) const
template<typename... T>
auto try_get_n () const
template<typename Func, if_t< is_callable< Func >::value > = 0>
bool get (const Func &func) const
template<typename... T, typename... Args>
decltype(auto) get (Args... args) const
template<typename... T, typename... Args>
decltype(auto) get_second (Args... args) const
template<typename... T>
auto get_n () const
template<typename... T, typename... Args>
decltype(auto) try_get_mut (Args... args) const
template<typename... T, typename... Args>
decltype(auto) try_get_mut_second (Args... args) const
template<typename... T>
auto try_get_mut_n () const
template<typename... T, typename... Args>
decltype(auto) get_mut (Args... args) const
template<typename... T, typename... Args>
decltype(auto) get_mut_second (Args... args) const
template<typename... T>
auto get_mut_n () const
template<typename Enum>
Enum get_constant () const
 Get enum constant for enum relationship.
template<typename First>
flecs::entity target (int32_t index=0) const
 Get target for a given pair.
flecs::entity target (flecs::entity_t first, int32_t index=0) const
 Get target for a given pair.
flecs::entity target_for (flecs::entity_t relationship, flecs::id_t id) const
 Get the target of a pair for a given relationship ID.
template<typename T>
flecs::entity target_for (flecs::entity_t relationship) const
 Get the target of a pair for a given relationship ID.
template<typename First, typename Second>
flecs::entity target_for (flecs::entity_t relationship) const
 Get the target of a pair for a given relationship ID.
int32_t depth (flecs::entity_t rel) const
 Get the depth for a given relationship.
template<typename Rel>
int32_t depth () const
 Get the depth for a given relationship.
flecs::entity parent () const
 Get parent of entity.
flecs::entity lookup (const char *path, bool search_path=false) const
 Lookup an entity by name.
template<typename... T, typename... Args>
bool has (Args... args) const
template<typename Second>
bool has_second (flecs::entity_t first) const
template<typename... T, typename... Args>
bool owns (Args... args) const
template<typename Second>
bool owns_second (flecs::entity_t first) const
template<typename... T, typename... Args>
bool enabled (Args... args) const
flecs::entity clone (bool clone_value=true, flecs::entity_t dst_id=0) const
 Clone an entity.
flecs::entity mut (const flecs::world &stage) const
 Return a mutable entity handle for the current stage.
flecs::entity mut (const flecs::iter &it) const
 Same as mut(world), but for an iterator.
flecs::entity mut (const flecs::entity_view &e) const
 Same as mut(world), but for an entity.
flecs::string to_json (const flecs::entity_to_json_desc_t *desc=nullptr) const
 Serialize an entity to JSON.
const char * doc_name () const
 Get human-readable name.
const char * doc_brief () const
 Get brief description.
const char * doc_detail () const
 Get detailed description.
const char * doc_link () const
 Get link to external documentation.
const char * doc_color () const
 Get color.
const char * doc_uuid () const
 Get UUID.
int32_t alert_count (flecs::entity_t alert=0) const
 Return the number of alerts for an entity.
template<typename E>
to_constant () const
 Convert an entity to an enum constant.
void emit (flecs::entity_t evt) const
 Emit an event for an entity.
void emit (flecs::entity evt) const
 Emit an event for an entity.
template<typename Evt, if_t< is_empty< Evt >::value > = 0>
void emit () const
 Emit an event for an entity.
template<typename Evt, if_not_t< is_empty< Evt >::value > = 0>
void emit (const Evt &payload) const
 Emit an event with payload for an entity.
void enqueue (flecs::entity_t evt) const
 Enqueue an event for an entity.
void enqueue (flecs::entity evt) const
 Enqueue an event for an entity.
template<typename Evt, if_t< is_empty< Evt >::value > = 0>
void enqueue () const
 Enqueue an event for an entity.
template<typename Evt, if_not_t< is_empty< Evt >::value > = 0>
void enqueue (const Evt &payload) const
 Enqueue an event with payload for an entity.
int32_t alert_count (flecs::entity_t alert=0) const
 Return the number of alerts for an entity.
const char * doc_name () const
 Get human-readable name.
const char * doc_brief () const
 Get brief description.
const char * doc_detail () const
 Get detailed description.
const char * doc_link () const
 Get link to external documentation.
const char * doc_color () const
 Get color.
const char * doc_uuid () const
 Get UUID.
template<typename E>
to_constant () const
 Convert an entity to an enum constant.
void emit (flecs::entity_t evt) const
 Emit an event for an entity.
void emit (flecs::entity evt) const
 Emit an event for an entity.
template<typename Evt, if_t< is_empty< Evt >::value > = 0>
void emit () const
 Emit an event for an entity.
template<typename Evt, if_not_t< is_empty< Evt >::value > = 0>
void emit (const Evt &payload) const
 Emit an event with payload for an entity.
void enqueue (flecs::entity_t evt) const
 Enqueue an event for an entity.
void enqueue (flecs::entity evt) const
 Enqueue an event for an entity.
template<typename Evt, if_t< is_empty< Evt >::value > = 0>
void enqueue () const
 Enqueue an event for an entity.
template<typename Evt, if_not_t< is_empty< Evt >::value > = 0>
void enqueue (const Evt &payload) const
 Enqueue an event with payload for an entity.
flecs::string to_json (const flecs::entity_to_json_desc_t *desc=nullptr) const
 Serialize an entity to JSON.
Public Member Functions inherited from flecs::id
 id (flecs::id_t value)
 id (flecs::world_t *world, flecs::id_t value=0)
 id (flecs::world_t *world, flecs::id_t first, flecs::id_t second)
 id (flecs::world_t *world, const char *expr)
 id (flecs::id_t first, flecs::id_t second)
 id (const flecs::id &first, const flecs::id &second)
bool is_pair () const
 Test if ID is a pair (has first, second).
bool is_value_pair () const
 Test if ID is a value pair (has first, value).
bool is_wildcard () const
 Test if ID is a wildcard.
bool is_entity () const
 Test if ID is an entity.
flecs::entity entity () const
 Return ID as entity (only allowed when ID is a valid entity).
flecs::entity add_flags (flecs::id_t flags) const
 Return ID with flags added.
flecs::entity remove_flags (flecs::id_t flags) const
 Return ID with flags removed.
flecs::entity remove_flags () const
 Return ID without flags.
flecs::entity remove_generation () const
 Return ID without generation.
flecs::entity type_id () const
 Return component type of ID.
bool has_flags (flecs::id_t flags) const
 Test if ID has specified flags.
bool has_flags () const
 Test if ID has any flags.
flecs::entity flags () const
 Return ID flags set on ID.
bool has_relation (flecs::id_t first) const
 Test if ID has the specified first element.
flecs::entity first () const
 Get first element from a pair.
flecs::entity second () const
 Get second element from a pair.
flecs::string str () const
 Convert ID to string.
flecs::string flags_str () const
 Convert flags of ID to string.
flecs::id_t raw_id () const
 Return flecs::id_t value.
 operator flecs::id_t () const
flecs::world world () const
 Get the world.

Static Public Member Functions

static flecs::entity null (const flecs::world_t *world)
 Entity ID 0.
static flecs::entity null ()
 Entity ID 0 without a world.

Additional Inherited Members

Protected Member Functions inherited from flecs::entity_builder< entity >
const entityto_base () const
Protected Attributes inherited from flecs::id
flecs::world_tworld_
 World is optional, but guarantees that entity identifiers extracted from the ID are valid.
flecs::id_t id_
 The raw ID value.
const entityunit (flecs::entity_t prefix=0, flecs::entity_t base=0, flecs::entity_t over=0, int32_t factor=0, int32_t power=0) const
 Make an entity a derived unit.
const entityunit_prefix (const char *symbol, int32_t factor=0, int32_t power=0) const
 Make an entity a unit prefix.
const entityquantity (flecs::entity_t quantity) const
 Add a quantity to a unit.
const entityquantity () const
 Add a quantity to a unit.
const entityquantity () const
 Make an entity a quantity.

Detailed Description

Entity.

Class with read/write operations for entities.

Definition at line 29 of file entity.hpp.

Constructor & Destructor Documentation

◆ entity() [1/7]

flecs::entity::entity ( )
inline

Default constructor.

Creates an empty entity.

Definition at line 32 of file entity.hpp.

◆ entity() [2/7]

flecs::entity::entity ( const flecs::world_t * world,
flecs::entity_t id )
inlineexplicit

Wrap an existing entity ID.

Parameters
worldThe world in which the entity is created.
idThe entity ID.

Definition at line 39 of file entity.hpp.

◆ entity() [3/7]

flecs::entity::entity ( world_t * world)
inlineexplicit

Create a new entity.

Parameters
worldThe world in which to create the entity.

Definition at line 48 of file entity.hpp.

◆ entity() [4/7]

flecs::entity::entity ( world_t * world,
const char * name,
const char * sep = "::",
const char * root_sep = "::" )
inlineexplicit

Create a named entity.

Parameters
worldThe world in which to create the entity.
nameThe entity name.
sepString used to indicate scoping (Foo::Bar).
root_sepString used to indicate name is fully scoped (::Foo::Bar).

Definition at line 62 of file entity.hpp.

◆ entity() [5/7]

flecs::entity::entity ( world_t * world,
flecs::entity_t parent,
const char * name,
const char * sep = "::",
const char * root_sep = "::" )
inlineexplicit

Create a named entity for a parent using ChildOf hierarchy storage.

Parameters
worldThe world in which to create the entity.
parentThe parent entity ID.
nameThe entity name.
sepString used to indicate scoping (Foo::Bar).
root_sepString used to indicate name is fully scoped (::Foo::Bar).

Definition at line 85 of file entity.hpp.

◆ entity() [6/7]

flecs::entity::entity ( world_t * world,
const flecs::Parent & parent,
const char * name = nullptr )
inlineexplicit

Create a named entity for a parent using Parent hierarchy storage.

The specified name cannot be a scoped identifier. For example:

  • OK: "Foo"
  • Not OK: "Foo::Bar"
Parameters
worldThe world in which to create the entity.
parentThe parent entity.
nameThe entity name (optional).

Definition at line 111 of file entity.hpp.

◆ entity() [7/7]

flecs::entity::entity ( entity_t id)
inlineexplicit

Conversion from flecs::entity_t to flecs::entity.

Parameters
idThe entity_t value to convert.

Definition at line 124 of file entity.hpp.

Member Function Documentation

◆ clear()

void flecs::entity::clear ( ) const
inline

Clear an entity.

This operation removes all components from an entity without recycling the entity ID.

See also
ecs_clear()

Definition at line 198 of file entity.hpp.

◆ destruct()

void flecs::entity::destruct ( ) const
inline

Delete an entity.

Entities have to be deleted explicitly, and are not deleted when the entity object goes out of scope.

See also
ecs_delete()

Definition at line 208 of file entity.hpp.

◆ ensure()

template<typename... T, typename... Args>
decltype(auto) flecs::entity::ensure ( Args... args) const
inline

Definition at line 130 of file entity.hpp.

◆ ensure_second()

template<typename Second>
Second & flecs::entity::ensure_second ( entity_t first) const
inline

Definition at line 136 of file entity.hpp.

◆ from_json()

const char * from_json ( const char * json)

Deserialize an entity from JSON.

Definition at line 11 of file entity.inl.

◆ get_ref()

template<typename... T, typename... Args>
auto flecs::entity::get_ref ( Args... args) const
inline

Definition at line 180 of file entity.hpp.

◆ get_ref_second()

template<typename Second>
ref< Second > flecs::entity::get_ref_second ( flecs::entity_t first) const
inline

Definition at line 188 of file entity.hpp.

◆ get_ref_w_id()

template<typename T, if_t< is_actual< T >::value > = 0>
ref< T > flecs::entity::get_ref_w_id ( flecs::id_t component) const
inline

Get reference to component specified by component ID.

A reference allows for quick and safe access to a component value, and is a faster alternative to repeatedly calling get() for the same component.

The method accepts a component ID argument, which can be used to create a ref to a component that is different from the provided type. This allows for creating a base type ref that points to a derived type:

flecs::ref<Base> r = e.get_ref_w_id<Base>(world.id<Derived>());
Component reference.
Definition ref.hpp:109
The world.
Definition world.hpp:129
flecs::id id() const
Get ID from a type.
Definition impl.hpp:72

If the provided component ID is not binary compatible with the specified type, the behavior is undefined.

Template Parameters
TComponent for which to get a reference.
Parameters
componentThe component ID to reference.
Returns
The reference.

Definition at line 174 of file entity.hpp.

◆ modified()

template<typename... T, typename... Args>
void flecs::entity::modified ( Args... args) const
inline

Definition at line 144 of file entity.hpp.

◆ null() [1/2]

flecs::entity flecs::entity::null ( )
inlinestatic

Entity ID 0 without a world.

Returns
An entity with ID 0 and no world.

Definition at line 259 of file entity.hpp.

◆ null() [2/2]

flecs::entity flecs::entity::null ( const flecs::world_t * world)
inlinestatic

Entity ID 0.

This function is useful when the API must provide an entity that belongs to a world, but the entity ID is 0.

Parameters
worldThe world.
Returns
An entity with ID 0.

Definition at line 248 of file entity.hpp.

◆ set_child_order()

void flecs::entity::set_child_order ( flecs::entity_t * children,
int32_t child_count ) const
inline

Set child order.

Changes the order of children as returned by entity::children(). Only applicable to entities with the flecs::OrderedChildren trait.

Parameters
childrenArray of child entity IDs in the desired order.
child_countNumber of children in the array.
See also
ecs_set_child_order()

Definition at line 221 of file entity.hpp.

◆ view()

flecs::entity_view flecs::entity::view ( ) const
inline

Return the entity as an entity_view.

This returns an entity_view instance for the entity, which is a read-only version of the entity class.

This is similar to a regular upcast, except that this method ensures that the entity_view instance is instantiated with a world vs. a stage, which a regular upcast does not guarantee.

Returns
The entity_view.

Definition at line 235 of file entity.hpp.


The documentation for this struct was generated from the following files: