Flecs v3.1
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
flecs::entity Struct Reference

Entity. More...

#include <entity.hpp>

Inheritance diagram for flecs::entity:
flecs::entity_builder< entity > flecs::entity_view flecs::id flecs::observer flecs::pipeline< Components > flecs::system flecs::timer flecs::untyped_component flecs::component< T >

Public Member Functions

 entity (world_t *world)
 Create entity. More...
 
 entity (const flecs::world_t *world, flecs::id_t id)
 Wrap an existing entity id. More...
 
 entity (world_t *world, const char *name)
 Create a named entity. More...
 
 entity (entity_t id)
 Conversion from flecs::entity_t to flecs::entity. More...
 
template<typename T >
T * get_mut () const
 Get mutable component value. More...
 
void * get_mut (entity_t comp) const
 Get mutable component value (untyped). More...
 
template<typename First , typename Second , typename P = pair<First, Second>, typename A = actual_type_t<P>, if_not_t< flecs::is_pair< First >::value > = 0>
A * get_mut () const
 Get mutable pointer for a pair. More...
 
template<typename First >
First * get_mut (entity_t second) const
 Get mutable pointer for a pair. More...
 
void * get_mut (entity_t first, entity_t second) const
 Get mutable pointer for a pair (untyped). More...
 
template<typename Second >
Second * get_mut_second (entity_t first) const
 Get mutable pointer for the second element of a pair. More...
 
template<typename T >
void modified () const
 Signal that component was modified. More...
 
template<typename First , typename Second >
void modified () const
 Signal that the first element of a pair was modified. More...
 
template<typename First >
void modified (entity_t second) const
 Signal that the first part of a pair was modified. More...
 
void modified (entity_t first, entity_t second) const
 Signal that a pair has modified (untyped). More...
 
void modified (entity_t comp) const
 Signal that component was modified. More...
 
template<typename T >
ref< T > get_ref () const
 Get reference to component. More...
 
template<typename First , typename Second , typename P = flecs::pair<First, Second>, typename A = actual_type_t<P>>
ref< A > get_ref () const
 
template<typename First >
ref< First > get_ref (flecs::entity_t second) const
 
template<typename Second >
ref< Second > get_ref_second (flecs::entity_t first) const
 
void clear () const
 Clear an entity. More...
 
void destruct () const
 Delete an entity. More...
 
const char * from_json (const char *json)
 Deserialize entity to JSON. More...
 
- Public Member Functions inherited from flecs::entity_builder< entity >
entityadd ()
 Add a component to an entity. More...
 
entityadd (id_t component)
 Add an entity to an entity. More...
 
entityadd (entity_t first, entity_t second)
 Add a pair. More...
 
entityadd ()
 Add a pair. More...
 
entityadd (Second second)
 Add a pair. More...
 
entityadd (Second constant)
 Add a pair. More...
 
entityadd (E value)
 Add pair for enum constant. More...
 
entityadd_second (flecs::entity_t first)
 Add a pair. More...
 
entityadd_if (bool cond, flecs::id_t component)
 Conditional add. More...
 
entityadd_if (bool cond)
 Conditional add. More...
 
entityadd_if (bool cond, flecs::entity_t first, flecs::entity_t second)
 Conditional add. More...
 
entityadd_if (bool cond, flecs::entity_t second)
 Conditional add. More...
 
entityadd_if (bool cond)
 Conditional add. More...
 
entityadd_if (bool cond, E constant)
 Conditional add. More...
 
entityis_a (entity_t second)
 Shortcut for add(IsA, entity). More...
 
entityis_a ()
 Shortcut for add(IsA, entity). More...
 
entitychild_of (entity_t second)
 Shortcut for add(ChildOf, entity). More...
 
entitychild_of ()
 Shortcut for add(ChildOf, entity). More...
 
entitydepends_on (entity_t second)
 Shortcut for add(DependsOn, entity). More...
 
entitydepends_on ()
 Shortcut for add(DependsOn, entity). More...
 
entityslot_of (entity_t second)
 Shortcut for add(SlotOf, entity). More...
 
entityslot_of ()
 Shortcut for add(SlotOf, entity). More...
 
entityslot ()
 Shortcut for add(SlotOf, target(ChildOf)). More...
 
entityremove ()
 Remove a component from an entity. More...
 
entityremove (entity_t entity)
 Remove an entity from an entity. More...
 
entityremove (entity_t first, entity_t second)
 Remove a pair. More...
 
entityremove ()
 Removes a pair. More...
 
entityremove (Second second)
 Remove a pair. More...
 
entityremove (Second constant)
 Remove a pair. More...
 
entityremove ()
 Remove pair for enum. More...
 
entityremove_second (flecs::entity_t first)
 Removes a pair. More...
 
entityoverride (flecs::id_t id)
 Mark id for auto-overriding. More...
 
entityoverride (flecs::entity_t first, flecs::entity_t second)
 Mark pair for auto-overriding. More...
 
entityoverride ()
 Mark component for auto-overriding. More...
 
entityoverride (flecs::entity_t second)
 Mark pair for auto-overriding. More...
 
entityoverride ()
 Mark pair for auto-overriding. More...
 
entityset_override (const T &val)
 Set component, mark component for auto-overriding. More...
 
entityset_override (T &&val)
 Set component, mark component for auto-overriding. More...
 
entityset_override (flecs::entity_t second, const First &val)
 Set pair, mark component for auto-overriding. More...
 
entityset_override (flecs::entity_t second, First &&val)
 Set pair, mark component for auto-overriding. More...
 
entityset_override (const A &val)
 Set component, mark component for auto-overriding. More...
 
entityset_override (A &&val)
 Set component, mark component for auto-overriding. More...
 
entityemplace_override (Args &&... args)
 Emplace component, mark component for auto-overriding. More...
 
entityemplace_override (Args &&... args)
 Emplace pair, mark pair for auto-overriding. More...
 
entityenable ()
 Enable an entity. More...
 
entityenable (flecs::id_t id, bool toggle=true)
 Enable an id. More...
 
entityenable ()
 Enable a component. More...
 
entityenable (flecs::id_t first, flecs::id_t second)
 Enable a pair. More...
 
entityenable (flecs::id_t second)
 Enable a pair. More...
 
entityenable ()
 Enable a pair. More...
 
entitydisable ()
 Disable an entity. More...
 
entitydisable (flecs::id_t id)
 Disable an id. More...
 
entitydisable ()
 Disable a component. More...
 
entitydisable (flecs::id_t first, flecs::id_t second)
 Disable a pair. More...
 
entitydisable (flecs::id_t second)
 Disable a pair. More...
 
entitydisable ()
 Disable a pair. More...
 
entityset_ptr (entity_t comp, size_t size, const void *ptr)
 
entityset_ptr (entity_t comp, const void *ptr)
 
entityset (T &&value)
 
entityset (const T &value)
 
entityset (A &&value)
 
entityset (const A &value)
 
entityset (A &&value)
 Set a pair for an entity. More...
 
entityset (const A &value)
 Set a pair for an entity. More...
 
entityset (Second second, const First &value)
 Set a pair for an entity. More...
 
entityset (Second second, First &&value)
 Set a pair for an entity. More...
 
entityset (Second constant, const First &value)
 Set a pair for an entity. More...
 
entityset (const Func &func)
 Set 1..N components. More...
 
entityset_second (entity_t first, const Second &value)
 Set a pair for an entity. More...
 
entityset_second (entity_t first, Second &&value)
 Set a pair for an entity. More...
 
entityset_second (const Second &value)
 
entityemplace (Args &&... args)
 Emplace component. More...
 
entityemplace (Args &&... args)
 
entityemplace_first (flecs::entity_t second, Args &&... args)
 
entityemplace_second (flecs::entity_t first, Args &&... args)
 
entitywith (const Func &func)
 Entities created in function will have the current entity. More...
 
entitywith (const Func &func)
 Entities created in function will have (First, this). More...
 
entitywith (entity_t first, const Func &func)
 Entities created in function will have (first, this). More...
 
entityscope (const Func &func)
 The function will be ran with the scope set to the current entity. More...
 
entityset_name (const char *name)
 
entityset_doc_name (const char *name)
 Set doc name. More...
 
entityset_doc_brief (const char *brief)
 Set doc brief. More...
 
entityset_doc_detail (const char *detail)
 Set doc detailed description. More...
 
entityset_doc_link (const char *link)
 Set doc link. More...
 
entityset_doc_color (const char *link)
 Set doc color. More...
 
 entity_view ()
 
 entity_view (flecs::world_t *world, flecs::id_t id)
 Wrap an existing entity id. More...
 
 entity_view (entity_t id)
 Implicit conversion from flecs::entity_t to flecs::entity_view. More...
 
- Public Member Functions inherited from flecs::entity_view
 entity_view (flecs::world_t *world, flecs::id_t id)
 Wrap an existing entity id. More...
 
 entity_view (entity_t id)
 Implicit conversion from flecs::entity_t to flecs::entity_view. More...
 
entity_t id () const
 Get entity id. More...
 
bool is_valid () const
 Check is entity is valid. More...
 
 operator bool () const
 
bool is_alive () const
 Check is entity is alive. More...
 
flecs::string_view name () const
 Return the entity name. More...
 
flecs::string_view symbol () const
 Return the entity symbol. More...
 
flecs::string path (const char *sep="::", const char *init_sep="::") const
 Return the entity path. More...
 
bool enabled () const
 
flecs::type type () const
 Get the entity's type. More...
 
flecs::table table () const
 Get the entity's table. More...
 
flecs::table_range range () const
 Get table range for the entity. More...
 
template<typename Func >
void each (const Func &func) const
 Iterate (component) ids of an entity. More...
 
template<typename Func >
void each (flecs::id_t first, flecs::id_t second, const Func &func) const
 Iterate matching pair ids of an entity. More...
 
template<typename Func >
void each (const flecs::entity_view &rel, const Func &func) const
 Iterate targets for a given relationship. More...
 
template<typename First , typename Func >
void each (const Func &func) const
 Iterate targets for a given relationship. More...
 
template<typename Func >
void children (flecs::entity_t rel, Func &&func) const
 Iterate children for entity. More...
 
template<typename Rel , typename Func >
void children (Func &&func) const
 Iterate children for entity. More...
 
template<typename Func >
void children (Func &&func) const
 Iterate children for entity. More...
 
template<typename T , if_t< is_actual< T >::value > = 0>
const T * get () const
 Get component value. More...
 
template<typename T , typename A = actual_type_t<T>, if_t< flecs::is_pair< T >::value > = 0>
const A * get () const
 Get component value. More...
 
template<typename First , typename Second , typename P = pair<First, Second>, typename A = actual_type_t<P>, if_not_t< flecs::is_pair< First >::value > = 0>
const A * get () const
 Get a pair. More...
 
template<typename First , typename Second , if_not_t< is_enum< Second >::value > = 0>
const First * get (Second second) const
 Get a pair. More...
 
template<typename First , typename Second , if_t< is_enum< Second >::value > = 0>
const First * get (Second constant) const
 Get a pair. More...
 
const void * get (flecs::id_t comp) const
 Get component value (untyped). More...
 
const void * get (flecs::entity_t first, flecs::entity_t second) const
 Get a pair (untyped). More...
 
template<typename Func , if_t< is_callable< Func >::value > = 0>
bool get (const Func &func) const
 Get 1..N components. More...
 
template<typename T , if_t< is_enum< T >::value > = 0>
const T * get () const
 Get enum constant. More...
 
template<typename Second >
const Second * get_second (flecs::entity_t first) const
 Get the second part for a pair. More...
 
template<typename First , typename Second >
const Second * get_second () const
 Get the second part for a pair. More...
 
template<typename First >
flecs::entity target (int32_t index=0) const
 Get target for a given pair. More...
 
flecs::entity target (flecs::entity_t first, int32_t index=0) const
 Get target for a given pair. More...
 
flecs::entity target_for (flecs::entity_t relationship, flecs::id_t id) const
 Get the target of a pair for a given relationship id. More...
 
template<typename T >
flecs::entity target_for (flecs::entity_t relationship) const
 
template<typename First , typename Second >
flecs::entity target_for (flecs::entity_t relationship) const
 
int32_t depth (flecs::entity_t rel) const
 Get depth for given relationship. More...
 
template<typename Rel >
int32_t depth () const
 Get depth for given relationship. More...
 
flecs::entity parent () const
 Get parent of entity. More...
 
flecs::entity lookup (const char *path) const
 Lookup an entity by name. More...
 
bool has (flecs::id_t e) const
 Check if entity has the provided entity. More...
 
template<typename T >
bool has () const
 Check if entity has the provided component. More...
 
template<typename E , if_t< is_enum< E >::value > = 0>
bool has (E value) const
 Check if entity has the provided enum constant. More...
 
template<typename First , typename Second >
bool has () const
 Check if entity has the provided pair. More...
 
template<typename First , typename Second , if_not_t< is_enum< Second >::value > = 0>
bool has (Second second) const
 Check if entity has the provided pair. More...
 
template<typename Second >
bool has_second (flecs::entity_t first) const
 Check if entity has the provided pair. More...
 
template<typename First , typename E , if_t< is_enum< E >::value > = 0>
bool has (E value) const
 Check if entity has the provided pair. More...
 
bool has (flecs::id_t first, flecs::id_t second) const
 Check if entity has the provided pair. More...
 
bool owns (flecs::id_t e) const
 Check if entity owns the provided entity. More...
 
template<typename First >
bool owns (flecs::id_t second) const
 Check if entity owns the provided pair. More...
 
bool owns (flecs::id_t first, flecs::id_t second) const
 Check if entity owns the provided pair. More...
 
template<typename T >
bool owns () const
 Check if entity owns the provided component. More...
 
template<typename First , typename Second >
bool owns () const
 Check if entity owns the provided pair. More...
 
bool enabled (flecs::id_t id) const
 Test if id is enabled. More...
 
template<typename T >
bool enabled () const
 Test if component is enabled. More...
 
bool enabled (flecs::id_t first, flecs::id_t second) const
 Test if pair is enabled. More...
 
template<typename First >
bool enabled (flecs::id_t second) const
 Test if pair is enabled. More...
 
template<typename First , typename Second >
bool enabled () const
 Test if pair is enabled. More...
 
ecs_ftime_t delta_time () const
 Get current delta time. More...
 
flecs::entity clone (bool clone_value=true, flecs::entity_t dst_id=0) const
 
flecs::entity mut (const flecs::world &stage) const
 Return mutable entity handle for current stage When an entity handle created from the world is used while the world is in staged mode, it will only allow for readonly operations since structural changes are not allowed on the world while in staged mode. More...
 
flecs::entity mut (const flecs::iter &it) const
 Same as mut(world), but for iterator. More...
 
flecs::entity mut (const flecs::entity_view &e) const
 Same as mut(world), but for entity. More...
 
template<typename E >
to_constant () const
 Convert entity to enum constant. More...
 
flecs::string to_json (const flecs::entity_to_json_desc_t *desc=nullptr)
 Serialize entity to JSON. More...
 
Self & unit (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)
 Make entity a unit. More...
 
- 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::id_t first, flecs::id_t second)
 
 id (const flecs::id &first, const flecs::id &second)
 
bool is_pair () const
 Test if id is pair (has first, second) More...
 
bool is_wildcard () const
 Test if id is a wildcard. More...
 
bool is_entity () const
 Test if id is entity. More...
 
flecs::entity entity () const
 Return id as entity (only allowed when id is valid entity) More...
 
flecs::entity add_flags (flecs::id_t flags) const
 Return id with role added. More...
 
flecs::entity remove_flags (flecs::id_t flags) const
 Return id with role removed. More...
 
flecs::entity remove_flags () const
 Return id without role. More...
 
flecs::entity remove_generation () const
 Return id without role. More...
 
flecs::entity type_id () const
 Return component type of id. More...
 
bool has_flags (flecs::id_t flags) const
 Test if id has specified role. More...
 
bool has_flags () const
 Test if id has any role. More...
 
flecs::entity flags () const
 Return id flags set on id. More...
 
bool has_relation (flecs::id_t first) const
 Test if id has specified first. More...
 
flecs::entity first () const
 Get first element from a pair. More...
 
flecs::entity second () const
 Get second element from a pair. More...
 
flecs::string str () const
 
flecs::string flags_str () const
 Convert role of id to string. More...
 
flecs::id_t raw_id () const
 Return flecs::id_t value. More...
 
 operator flecs::id_t () const
 
flecs::world world () const
 

Static Public Member Functions

static flecs::entity null (const flecs::world_t *world)
 Entity id 0. More...
 
static flecs::entity null ()
 

Additional Inherited Members

- Protected Member Functions inherited from flecs::entity_builder< entity >
entityto_base ()
 
- Protected Attributes inherited from flecs::id
flecs::world_t * m_world
 
flecs::id_t m_id
 

Detailed Description

Entity.

Class with read/write operations for entities.

Definition at line 29 of file entity.hpp.

Constructor & Destructor Documentation

◆ entity() [1/5]

flecs::entity::entity ( )
inline

Definition at line 31 of file entity.hpp.

◆ entity() [2/5]

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

Create entity.

Parameters
worldThe world in which to create the entity.

Definition at line 37 of file entity.hpp.

◆ entity() [3/5]

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

Wrap an existing entity id.

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

Definition at line 49 of file entity.hpp.

◆ entity() [4/5]

flecs::entity::entity ( world_t *  world,
const char *  name 
)
inlineexplicit

Create a named entity.

Named entities can be looked up with the lookup functions. Entity names may be scoped, where each element in the name is separated by "::". For example: "Foo::Bar". If parts of the hierarchy in the scoped name do not yet exist, they will be automatically created.

Parameters
worldThe world in which to create the entity.
nameThe entity name.

Definition at line 63 of file entity.hpp.

◆ entity() [5/5]

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 79 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.

Definition at line 261 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.

Definition at line 269 of file entity.hpp.

◆ get_mut() [1/5]

template<typename T >
T * flecs::entity::get_mut ( ) const
inline

Get mutable component value.

This operation returns a mutable pointer to the component. If the entity did not yet have the component, it will be added. If a base entity had the component, it will be overridden, and the value of the base component will be copied to the entity before this function returns.

Template Parameters
TThe component to get.
Returns
Pointer to the component value.

Definition at line 92 of file entity.hpp.

◆ get_mut() [2/5]

template<typename First , typename Second , typename P = pair<First, Second>, typename A = actual_type_t<P>, if_not_t< flecs::is_pair< First >::value > = 0>
A * flecs::entity::get_mut ( ) const
inline

Get mutable pointer for a pair.

This operation gets the value for a pair from the entity.

Template Parameters
FirstThe first part of the pair.
Secondthe second part of the pair.

Definition at line 119 of file entity.hpp.

◆ get_mut() [3/5]

void * flecs::entity::get_mut ( entity_t  comp) const
inline

Get mutable component value (untyped).

This operation returns a mutable pointer to the component. If the entity did not yet have the component, it will be added. If a base entity had the component, it will be overridden, and the value of the base component will be copied to the entity before this function returns.

Parameters
compThe component to get.
Returns
Pointer to the component value.

Definition at line 107 of file entity.hpp.

◆ get_mut() [4/5]

void * flecs::entity::get_mut ( entity_t  first,
entity_t  second 
) const
inline

Get mutable pointer for a pair (untyped).

This operation gets the value for a pair from the entity. If neither the first nor second element of the pair is a component, the operation will fail.

Parameters
firstThe first element of the pair.
secondThe second element of the pair.

Definition at line 147 of file entity.hpp.

◆ get_mut() [5/5]

template<typename First >
First * flecs::entity::get_mut ( entity_t  second) const
inline

Get mutable pointer for a pair.

This operation gets the value for a pair from the entity.

Template Parameters
FirstThe first part of the pair.
Parameters
secondThe second element of the pair.

Definition at line 132 of file entity.hpp.

◆ get_mut_second()

template<typename Second >
Second * flecs::entity::get_mut_second ( entity_t  first) const
inline

Get mutable pointer for the second element of a pair.

This operation gets the value for a pair from the entity.

Template Parameters
SecondThe second element of the pair.
Parameters
firstThe first element of the pair.

Definition at line 158 of file entity.hpp.

◆ get_ref() [1/3]

template<typename T >
ref< T > flecs::entity::get_ref ( ) const
inline

Get reference to component.

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.

Template Parameters
Tcomponent for which to get a reference.
Returns
The reference.

Definition at line 225 of file entity.hpp.

◆ get_ref() [2/3]

template<typename First , typename Second , typename P = flecs::pair<First, Second>, typename A = actual_type_t<P>>
ref< A > flecs::entity::get_ref ( ) const
inline

Definition at line 233 of file entity.hpp.

◆ get_ref() [3/3]

template<typename First >
ref< First > flecs::entity::get_ref ( flecs::entity_t  second) const
inline

Definition at line 242 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 250 of file entity.hpp.

◆ modified() [1/5]

template<typename T >
void flecs::entity::modified ( ) const
inline

Signal that component was modified.

Template Parameters
Tcomponent that was modified.

Definition at line 170 of file entity.hpp.

◆ modified() [2/5]

template<typename First , typename Second >
void flecs::entity::modified ( ) const
inline

Signal that the first element of a pair was modified.

Template Parameters
FirstThe first part of the pair.
Secondthe second part of the pair.

Definition at line 182 of file entity.hpp.

◆ modified() [3/5]

void flecs::entity::modified ( entity_t  comp) const
inline

Signal that component was modified.

Parameters
compcomponent that was modified.

Definition at line 213 of file entity.hpp.

◆ modified() [4/5]

void flecs::entity::modified ( entity_t  first,
entity_t  second 
) const
inline

Signal that a pair has modified (untyped).

If neither the first or second element of the pair are a component, the operation will fail.

Parameters
firstThe first element of the pair.
secondThe second element of the pair.

Definition at line 205 of file entity.hpp.

◆ modified() [5/5]

template<typename First >
void flecs::entity::modified ( entity_t  second) const
inline

Signal that the first part of a pair was modified.

Template Parameters
FirstThe first part of the pair.
Parameters
secondThe second element of the pair.

Definition at line 192 of file entity.hpp.

◆ null() [1/2]

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

Definition at line 287 of file entity.hpp.

◆ null() [2/2]

static 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.

Definition at line 280 of file entity.hpp.


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