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

Component class. More...

#include <component.hpp>

Inheritance diagram for flecs::component< T >:
flecs::untyped_component flecs::entity flecs::entity_builder< entity > flecs::entity_view flecs::id

Public Member Functions

 component (flecs::world_t *world, const char *name=nullptr, bool allow_tag=true, flecs::id_t id=0)
 Register a component. More...
 
template<typename Func >
component< T > & on_add (Func &&func)
 Register on_add hook. More...
 
template<typename Func >
component< T > & on_remove (Func &&func)
 Register on_remove hook. More...
 
template<typename Func >
component< T > & on_set (Func &&func)
 Register on_set hook. More...
 
- Public Member Functions inherited from flecs::untyped_component
 entity ()
 
 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...
 
- Public Member Functions inherited from flecs::entity
 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
 
untyped_componentmember (flecs::entity_t type_id, const char *name, int32_t count=0, size_t offset=0)
 Add member. More...
 
untyped_componentmember (flecs::entity_t type_id, flecs::entity_t unit, const char *name, int32_t count=0, size_t offset=0)
 Add member with unit. More...
 
template<typename MemberType >
untyped_componentmember (const char *name, int32_t count=0, size_t offset=0)
 Add member. More...
 
template<typename MemberType >
untyped_componentmember (flecs::entity_t unit, const char *name, int32_t count=0, size_t offset=0)
 Add member with unit. More...
 
template<typename MemberType , typename UnitType >
untyped_componentmember (const char *name, int32_t count=0, size_t offset=0)
 Add member with unit. More...
 
untyped_componentconstant (const char *name, int32_t value)
 Add constant. More...
 
untyped_componentbit (const char *name, uint32_t value)
 Add bitmask constant. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from flecs::entity
static flecs::entity null (const flecs::world_t *world)
 Entity id 0. More...
 
static flecs::entity null ()
 
- 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

template<typename T>
struct flecs::component< T >

Component class.

Class used to register components and component metadata.

Definition at line 363 of file component.hpp.

Constructor & Destructor Documentation

◆ component()

template<typename T >
flecs::component< T >::component ( flecs::world_t *  world,
const char *  name = nullptr,
bool  allow_tag = true,
flecs::id_t  id = 0 
)
inline

Register a component.

If the component was already registered, this operation will return a handle to the existing component.

Parameters
worldThe world for which to register the component.
nameOptional name (overrides typename).
allow_tagIf true, empty types will be registered with size 0.
idOptional id to register component with.

Definition at line 373 of file component.hpp.

Member Function Documentation

◆ on_add()

template<typename T >
template<typename Func >
component< T > & flecs::component< T >::on_add ( Func &&  func)
inline

Register on_add hook.

Definition at line 445 of file component.hpp.

◆ on_remove()

template<typename T >
template<typename Func >
component< T > & flecs::component< T >::on_remove ( Func &&  func)
inline

Register on_remove hook.

Definition at line 462 of file component.hpp.

◆ on_set()

template<typename T >
template<typename Func >
component< T > & flecs::component< T >::on_set ( Func &&  func)
inline

Register on_set hook.

Definition at line 479 of file component.hpp.


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