Flecs v3.2
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
Observers

Functions for working with events and observers. More...

Collaboration diagram for Observers:

Classes

struct  ecs_observer_desc_t
 Used with ecs_observer_init(). More...
 
struct  ecs_event_desc_t
 Used with ecs_emit(). More...
 

Typedefs

typedef struct ecs_observer_desc_t ecs_observer_desc_t
 Used with ecs_observer_init().
 
typedef struct ecs_event_desc_t ecs_event_desc_t
 Used with ecs_emit().
 

Functions

void ecs_emit (ecs_world_t *world, ecs_event_desc_t *desc)
 Send event.
 
void ecs_enqueue (ecs_world_t *world, ecs_event_desc_t *desc)
 
ecs_entity_t ecs_observer_init (ecs_world_t *world, const ecs_observer_desc_t *desc)
 Create observer.
 
bool ecs_observer_default_run_action (ecs_iter_t *it)
 Default run action for observer.
 
void * ecs_observer_get_ctx (const ecs_world_t *world, ecs_entity_t observer)
 Get observer ctx.
 
void * ecs_observer_get_binding_ctx (const ecs_world_t *world, ecs_entity_t observer)
 Get observer binding ctx.
 
const ecs_filter_tecs_observer_get_filter (const ecs_world_t *world, ecs_entity_t observer)
 Get observer query.
 

Detailed Description

Functions for working with events and observers.

Function Documentation

◆ ecs_emit()

void ecs_emit ( ecs_world_t * world,
ecs_event_desc_t * desc )

Send event.

This sends an event to matching triggers & is the mechanism used by flecs itself to send OnAdd, OnRemove, etc events.

Applications can use this function to send custom events, where a custom event can be any regular entity.

Applications should not send builtin flecs events, as this may violate assumptions the code makes about the conditions under which those events are sent.

Triggers are invoked synchronously. It is therefore safe to use stack-based data as event context, which can be set in the "param" member.

Parameters
worldThe world.
descEvent parameters.

◆ ecs_observer_default_run_action()

bool ecs_observer_default_run_action ( ecs_iter_t * it)

Default run action for observer.

This function can be called from a custom observer run action (see ecs_observer_desc_t::run for more details). This function ensures that the observer's filter is applied to the iterator's table, filters out duplicate events and implements EcsMonitor logic.

Parameters
itThe iterator.
Returns
True if the observer was invoked.

◆ ecs_observer_get_binding_ctx()

void * ecs_observer_get_binding_ctx ( const ecs_world_t * world,
ecs_entity_t observer )

Get observer binding ctx.

Return the value set in ecs_observer_desc_t::binding_ctx.

Parameters
worldThe world.
observerThe observer.
Returns
The context.

◆ ecs_observer_get_ctx()

void * ecs_observer_get_ctx ( const ecs_world_t * world,
ecs_entity_t observer )

Get observer ctx.

Return the value set in ecs_observer_desc_t::ctx.

Parameters
worldThe world.
observerThe observer.
Returns
The context.

◆ ecs_observer_get_filter()

const ecs_filter_t * ecs_observer_get_filter ( const ecs_world_t * world,
ecs_entity_t observer )

Get observer query.

Return the observer query.

Parameters
worldThe world.
observerThe observer.
Returns
The observer query.

◆ ecs_observer_init()

ecs_entity_t ecs_observer_init ( ecs_world_t * world,
const ecs_observer_desc_t * desc )

Create observer.

Observers are like triggers, but can subscribe for multiple terms. An observer only triggers when the source of the event meets all terms.

See the documentation for ecs_observer_desc_t for more details.

Parameters
worldThe world.
descThe observer creation parameters.