Flecs: flecs::system_builder_i< Base, Components > Struct Template Reference
Description: A fast entity component system (ECS) for C & C++

| 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
C++ API » Addons » Systems

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_t * | world_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_t * | term_
| Pointer to the current term.
Public Attributes inherited from flecs::term_ref_builder_i< Base >
ecs_term_ref_t * | term_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

  value | If 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

  interval | The 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

  Phase | The 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

  phase | The 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

  phase | The 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

  value | If 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_source | The tick source.
  rate | The 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

  rate | The 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

  T | The 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_source | The 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

Implements flecs::query_builder_i< Base, Components ... >.

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

- include/flecs/addons/cpp/mixins/system/builder_i.hpp