Flecs v4.1
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
flecs::system_builder_i< Base, Components > Struct Template Referenceabstract

System builder interface. More...

#include <builder_i.hpp>

Inheritance diagram for flecs::system_builder_i< Base, Components >:
[legend]

Public Member Functions

 system_builder_i (ecs_system_desc_t *desc)
 
Base & kind (entity_t phase)
 Specify in which phase the system should run.
 
template<typename E , if_t< is_enum< E >::value > = 0>
Base & kind (E phase)
 Specify in which phase the system should run, using an enum constant.
 
template<typename Phase >
Base & kind ()
 Specify in which phase the system should run.
 
Base & multi_threaded (bool value=true)
 Specify whether the system can run on multiple threads.
 
Base & immediate (bool value=true)
 Specify whether the system should be run in an immediate (non-staged) context.
 
Base & interval (ecs_ftime_t interval)
 Set the system interval.
 
Base & rate (const entity_t tick_source, int32_t rate)
 Set the system rate.
 
Base & rate (int32_t rate)
 Set the system rate.
 
template<typename T >
Base & tick_source ()
 Set the tick source.
 
Base & tick_source (flecs::entity_t tick_source)
 Set the tick source.
 
Base & ctx (void *ptr)
 Set the system context.
 
Base & run (ecs_iter_action_t action)
 Set the system run callback.
 
- Public Member Functions inherited from flecs::query_builder_i< Base, Components ... >
 query_builder_i (ecs_query_desc_t *desc, int32_t term_index=0)
 Construct from a query descriptor.
 
Base & query_flags (ecs_flags32_t flags)
 Set the query flags.
 
Base & cache_kind (query_cache_kind_t kind)
 Set the cache kind for the query.
 
Base & cached ()
 Enable auto-caching for the query.
 
Base & detect_changes ()
 Enable change detection for the query.
 
Base & expr (const char *expr)
 Set the query expression string.
 
Base & scope_open ()
 Open a query scope.
 
Base & scope_close ()
 Close a query scope.
 
Base & term ()
 Set the current term to the next one in the term list.
 
Base & term_at ()
 Set the current term to the one with the provided type.
 
Base & term_at (int32_t term_index)
 Set the current term to the one at the provided index.
 
Base & term_at (int32_t term_index)
 Set the current term to the one at the provided index and assert that the type matches.
 
Base & order_by (int(*compare)(flecs::entity_t, const T *, flecs::entity_t, const T *))
 Sort the output of a query.
 
Base & order_by (flecs::entity_t component, int(*compare)(flecs::entity_t, const void *, flecs::entity_t, const void *))
 Sort the output of a query.
 
Base & group_by (uint64_t(*group_by_action)(flecs::world_t *, flecs::table_t *table, flecs::id_t id, void *ctx))
 Group and sort matched tables.
 
Base & group_by (flecs::entity_t component, uint64_t(*group_by_action)(flecs::world_t *, flecs::table_t *table, flecs::id_t id, void *ctx))
 Group and sort matched tables.
 
Base & group_by ()
 Group and sort matched tables.
 
Base & group_by (flecs::entity_t component)
 Group and sort matched tables.
 
Base & group_by_ctx (void *ctx, ecs_ctx_free_t ctx_free=nullptr)
 Specify context to be passed to the group_by() function.
 
Base & on_group_create (ecs_group_create_action_t action)
 Specify the on_group_create() action.
 
Base & on_group_delete (ecs_group_delete_action_t action)
 Specify the on_group_delete() action.
 
Base & with ()
 Add a term for the specified type.
 
Base & with (id_t component_id)
 Add a term for the specified component ID.
 
Base & with (const char *component_name)
 Add a term for the specified component name.
 
Base & with (const char *first, const char *second)
 Add a term for a pair specified by name.
 
Base & with (entity_t first, entity_t second)
 Add a term for a pair specified by entity IDs.
 
Base & with (entity_t first, const char *second)
 Add a term for a pair with an entity ID first and a name second.
 
Base & with (const char *first, entity_t second)
 Add a term for a pair with a name first and an entity ID second.
 
Base & with (entity_t second)
 Add a term for a pair with type First and an entity ID second.
 
Base & with (const char *second)
 Add a term for a pair with type First and name second.
 
Base & with ()
 Add a term for a pair with types First and Second.
 
Base & with (E value)
 Add a term for an enum value.
 
Base & with (flecs::term &term)
 Add a term from an existing term reference.
 
Base & with (flecs::term &&term)
 Add a term from an existing term (move).
 
Base & without (Args &&... args)
 Add a negated term.
 
Base & without (Args &&... args)
 Add a negated term for the specified type.
 
Base & without ()
 Add a negated term for a pair of types.
 
Base & write ()
 Short for inout_stage(flecs::Out).
 
Base & write (Args &&... args)
 Add a write term with the specified arguments.
 
Base & write (Args &&... args)
 Add a write term for the specified type.
 
Base & write ()
 Add a write term for a pair of types.
 
Base & read ()
 Short for inout_stage(flecs::In).
 
Base & read (Args &&... args)
 Add a read term with the specified arguments.
 
Base & read (Args &&... args)
 Add a read term for the specified type.
 
Base & read ()
 Add a read term for a pair of types.
 
- Public Member Functions inherited from flecs::term_builder_i< Base >
 term_builder_i ()
 Default constructor.
 
 term_builder_i (ecs_term_t *term_ptr)
 Construct from a term pointer.
 
Base & term (id_t id)
 Set the term ID.
 
Base & src ()
 Call prior to setting values for the src identifier.
 
Base & first ()
 Call prior to setting values for the first identifier.
 
Base & second ()
 Call prior to setting values for the second identifier.
 
Base & src (flecs::entity_t id)
 Select the src identifier, initialize it with an entity ID.
 
template<typename T >
Base & src ()
 Select the src identifier, initialize it with the ID associated with the type.
 
Base & src (const char *name)
 Select the src identifier, initialize it with a name.
 
Base & first (flecs::entity_t id)
 Select the first identifier, initialize it with an entity ID.
 
template<typename T >
Base & first ()
 Select the first identifier, initialize it with the ID associated with the type.
 
Base & first (const char *name)
 Select the first identifier, initialize it with a name.
 
Base & second (flecs::entity_t id)
 Select the second identifier, initialize it with an entity ID.
 
template<typename T >
Base & second ()
 Select the second identifier, initialize it with the ID associated with the type.
 
Base & second (const char *name)
 Select the second identifier, initialize it with a name.
 
Base & up (flecs::entity_t trav=0)
 The up flag indicates that the term identifier may be substituted by traversing a relationship upwards.
 
template<typename Trav >
Base & up ()
 Traverse upwards using the specified relationship type.
 
Base & cascade (flecs::entity_t trav=0)
 The cascade flag is like up(), but returns results in breadth-first order.
 
template<typename Trav >
Base & cascade ()
 Cascade using the specified relationship type.
 
Base & desc ()
 Use with cascade() to iterate results in descending (bottom-to-top) order.
 
Base & parent ()
 Same as up().
 
Base & trav (flecs::entity_t trav, flecs::flags32_t flags=0)
 Specify the relationship to traverse, and flags to indicate direction.
 
Base & id_flags (id_t flags)
 Set ID flags for the term.
 
Base & inout (flecs::inout_kind_t inout)
 Set read/write access of the term.
 
Base & inout_stage (flecs::inout_kind_t inout)
 Set read/write access for a stage.
 
Base & write ()
 Short for inout_stage(flecs::Out).
 
Base & read ()
 Short for inout_stage(flecs::In).
 
Base & read_write ()
 Short for inout_stage(flecs::InOut).
 
Base & in ()
 Short for inout(flecs::In).
 
Base & out ()
 Short for inout(flecs::Out).
 
Base & inout ()
 Short for inout(flecs::InOut).
 
Base & inout_none ()
 Short for inout(flecs::InOutNone).
 
Base & oper (flecs::oper_kind_t oper)
 Set the operator of the term.
 
Base & and_ ()
 Short for oper(flecs::And).
 
Base & or_ ()
 Short for oper(flecs::Or).
 
Base & not_ ()
 Short for oper(flecs::Not).
 
Base & optional ()
 Short for oper(flecs::Optional).
 
Base & and_from ()
 Short for oper(flecs::AndFrom).
 
Base & or_from ()
 Short for oper(flecs::OrFrom).
 
Base & not_from ()
 Short for oper(flecs::NotFrom).
 
Base & filter ()
 Mark the term as a filter.
 
- Public Member Functions inherited from flecs::term_ref_builder_i< Base >
 term_ref_builder_i ()
 Default constructor.
 
virtual ~term_ref_builder_i ()
 Destructor.
 
Base & self ()
 The self flag indicates that the term identifier itself is used.
 
Base & id (flecs::entity_t id)
 Specify the value of the identifier by ID.
 
Base & entity (flecs::entity_t entity)
 Specify the value of the identifier by ID.
 
Base & name (const char *name)
 Specify the value of the identifier by name.
 
Base & var (const char *var_name)
 Specify that the identifier is a variable (resolved at query evaluation time).
 
Base & flags (flecs::flags64_t flags)
 Override the term ID flags.
 

Protected Member Functions

virtual flecs::world_tworld_v () override=0
 
- Protected Member Functions inherited from flecs::term_builder_i< Base >
void set_term (ecs_term_t *term)
 Set the current term pointer.
 
- Protected Member Functions inherited from flecs::term_ref_builder_i< Base >
void assert_term_ref ()
 

Additional Inherited Members

- Public Attributes inherited from flecs::term_builder_i< Base >
ecs_term_tterm_
 Pointer to the current term.
 
- Public Attributes inherited from flecs::term_ref_builder_i< Base >
ecs_term_ref_tterm_ref_
 Pointer to the current term reference.
 
- Protected Attributes inherited from flecs::query_builder_i< Base, Components ... >
int32_t term_index_
 
int32_t expr_count_
 

Detailed Description

template<typename Base, typename ... Components>
struct flecs::system_builder_i< Base, Components >

System builder interface.

Definition at line 18 of file builder_i.hpp.

Constructor & Destructor Documentation

◆ system_builder_i()

template<typename Base , typename ... Components>
flecs::system_builder_i< Base, Components >::system_builder_i ( ecs_system_desc_t * desc)
inline

Definition at line 23 of file builder_i.hpp.

Member Function Documentation

◆ ctx()

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::ctx ( void * ptr)
inline

Set the system context.

Definition at line 144 of file builder_i.hpp.

◆ immediate()

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::immediate ( bool value = true)
inline

Specify whether the system should be run in an immediate (non-staged) context.

Parameters
valueIf false, the system will always run staged.

Definition at line 79 of file builder_i.hpp.

◆ interval()

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::interval ( ecs_ftime_t interval)
inline

Set the system interval.

This operation will cause the system to be run at the specified interval.

The timer is synchronous, and is incremented each frame by delta_time.

Parameters
intervalThe interval value.

Definition at line 91 of file builder_i.hpp.

◆ kind() [1/3]

template<typename Base , typename ... Components>
template<typename Phase >
Base & flecs::system_builder_i< Base, Components >::kind ( )
inline

Specify in which phase the system should run.

Template Parameters
PhaseThe phase.

Definition at line 62 of file builder_i.hpp.

◆ kind() [2/3]

template<typename Base , typename ... Components>
template<typename E , if_t< is_enum< E >::value > = 0>
Base & flecs::system_builder_i< Base, Components >::kind ( E phase)
inline

Specify in which phase the system should run, using an enum constant.

Parameters
phaseThe enum phase value.

Definition at line 50 of file builder_i.hpp.

◆ kind() [3/3]

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::kind ( entity_t phase)
inline

Specify in which phase the system should run.

Parameters
phaseThe phase.

Definition at line 31 of file builder_i.hpp.

◆ multi_threaded()

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::multi_threaded ( bool value = true)
inline

Specify whether the system can run on multiple threads.

Parameters
valueIf false, the system will always run on a single thread.

Definition at line 70 of file builder_i.hpp.

◆ rate() [1/2]

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::rate ( const entity_t tick_source,
int32_t rate )
inline

Set the system rate.

This operation will cause the system to be run at a multiple of the provided tick source. The tick source may be any entity, including another system.

Parameters
tick_sourceThe tick source.
rateThe multiple at which to run the system.

Definition at line 104 of file builder_i.hpp.

◆ rate() [2/2]

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::rate ( int32_t rate)
inline

Set the system rate.

This operation will cause the system to be run at a multiple of the frame tick frequency. If a tick source was provided, this just updates the rate of the system.

Parameters
rateThe multiple at which to run the system.

Definition at line 117 of file builder_i.hpp.

◆ run()

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::run ( ecs_iter_action_t action)
inline

Set the system run callback.

Definition at line 150 of file builder_i.hpp.

◆ tick_source() [1/2]

template<typename Base , typename ... Components>
template<typename T >
Base & flecs::system_builder_i< Base, Components >::tick_source ( )
inline

Set the tick source.

This operation sets a shared tick source for the system.

Template Parameters
TThe type associated with the singleton tick source to use for the system.

Definition at line 128 of file builder_i.hpp.

◆ tick_source() [2/2]

template<typename Base , typename ... Components>
Base & flecs::system_builder_i< Base, Components >::tick_source ( flecs::entity_t tick_source)
inline

Set the tick source.

This operation sets a shared tick source for the system.

Parameters
tick_sourceThe tick source to use for the system.

Definition at line 138 of file builder_i.hpp.

◆ world_v()

template<typename Base , typename ... Components>
virtual flecs::world_t * flecs::system_builder_i< Base, Components >::world_v ( )
overrideprotectedpure virtual

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