Flecs v4.0
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
flecs.h File Reference

Flecs public API. More...

#include "flecs/private/api_defines.h"
#include "flecs/datastructures/vec.h"
#include "flecs/datastructures/sparse.h"
#include "flecs/datastructures/block_allocator.h"
#include "flecs/datastructures/stack_allocator.h"
#include "flecs/datastructures/map.h"
#include "flecs/datastructures/switch_list.h"
#include "flecs/datastructures/allocator.h"
#include "flecs/datastructures/strbuf.h"
#include "flecs/os_api.h"
#include "flecs/private/api_types.h"
#include "flecs/private/api_support.h"
#include "flecs/datastructures/hashmap.h"
#include "flecs/addons/flecs_c.h"
#include "flecs/private/addons.h"
Include dependency graph for flecs.h:

Go to the source code of this file.

Classes

struct  ecs_type_t
 A type is a list of (component) ids. More...
 
struct  ecs_header_t
 Header for ecs_poly_t objects. More...
 
struct  ecs_record_t
 Record for entity index. More...
 
struct  ecs_table_cache_hdr_t
 Header for table cache elements. More...
 
struct  ecs_table_record_t
 Metadata describing where a component id is stored in a table. More...
 
struct  ecs_term_ref_t
 Type that describes a reference to an entity or variable in a term. More...
 
struct  ecs_term_t
 Type that describes a term (single element in a query). More...
 
struct  ecs_query_t
 Queries are lists of constraints (terms) that match entities. More...
 
struct  ecs_observer_t
 An observer reacts to events matching a query. More...
 
struct  ecs_type_hooks_t
 
struct  ecs_type_info_t
 Type that contains component information (passed to ctors/dtors/...) More...
 
struct  ecs_value_t
 Utility to hold a value of a dynamic type. More...
 
struct  ecs_entity_desc_t
 Used with ecs_entity_init(). More...
 
struct  ecs_bulk_desc_t
 Used with ecs_bulk_init(). More...
 
struct  ecs_component_desc_t
 Used with ecs_component_init(). More...
 
struct  ecs_iter_t
 Iterator. More...
 
struct  ecs_query_desc_t
 Used with ecs_query_init(). More...
 
struct  ecs_observer_desc_t
 Used with ecs_observer_init(). More...
 
struct  ecs_event_desc_t
 Used with ecs_emit(). More...
 
struct  ecs_build_info_t
 Type with information about the current Flecs build. More...
 
struct  ecs_world_info_t
 Type that contains information about the world. More...
 
struct  ecs_query_group_info_t
 Type that contains information about a query group. More...
 
struct  EcsIdentifier
 A (string) identifier. More...
 
struct  EcsComponent
 Component information. More...
 
struct  EcsPoly
 Component for storing a poly object. More...
 
struct  EcsDefaultChildComponent
 When added to an entity this informs serialization formats which component to use when a value is assigned to an entity without specifying the component. More...
 
struct  ecs_entities_t
 Type returned by ecs_get_entities(). More...
 
struct  ecs_query_count_t
 Struct returned by ecs_query_count(). More...
 

Macros

#define FLECS_VERSION_MAJOR   4
 Flecs major version.
 
#define FLECS_VERSION_MINOR   0
 Flecs minor version.
 
#define FLECS_VERSION_PATCH   3
 Flecs patch version.
 
#define FLECS_VERSION
 Flecs version.
 
#define ecs_float_t   float
 Customizable precision for floating point operations.
 
#define ecs_ftime_t   ecs_float_t
 Customizable precision for scalar time values.
 
#define FLECS_DEBUG
 Used for input parameter checking and cheap sanity checks.
 
#define FLECS_CPP
 C++ API.
 
#define FLECS_MODULE
 Module support.
 
#define FLECS_SCRIPT
 ECS data definition format.
 
#define FLECS_STATS
 Track runtime statistics.
 
#define FLECS_METRICS
 Expose component data as statistics.
 
#define FLECS_ALERTS
 Monitor conditions for errors.
 
#define FLECS_SYSTEM
 System support.
 
#define FLECS_PIPELINE
 Pipeline support.
 
#define FLECS_TIMER
 Timer support.
 
#define FLECS_META
 Reflection support.
 
#define FLECS_UNITS
 Builtin standard units.
 
#define FLECS_JSON
 Parsing JSON to/from component values.
 
#define FLECS_DOC
 Document entities & components.
 
#define FLECS_LOG
 When enabled ECS provides more detailed logs.
 
#define FLECS_APP
 Application addon.
 
#define FLECS_OS_API_IMPL
 Default implementation for OS API.
 
#define FLECS_HTTP
 Tiny HTTP server for connecting to remote UI.
 
#define FLECS_REST
 REST API for querying application data.
 
#define FLECS_HI_COMPONENT_ID   (256)
 This constant can be used to balance between performance and memory utilization.
 
#define FLECS_HI_ID_RECORD_ID   (1024)
 This constant can be used to balance between performance and memory utilization.
 
#define FLECS_SPARSE_PAGE_BITS   (6)
 This constant is used to determine the number of bits of an id that is used to determine the page index when used with a sparse set.
 
#define FLECS_ENTITY_PAGE_BITS   (12)
 Same as FLECS_SPARSE_PAGE_BITS, but for the entity index.
 
#define FLECS_ID_DESC_MAX   (32)
 Maximum number of ids to add ecs_entity_desc_t / ecs_bulk_desc_t.
 
#define FLECS_EVENT_DESC_MAX   (8)
 Maximum number of events in ecs_observer_desc_t.
 
#define FLECS_VARIABLE_COUNT_MAX   (64)
 Maximum number of query variables per query.
 
#define FLECS_TERM_COUNT_MAX   32
 Maximum number of terms in queries.
 
#define FLECS_TERM_ARG_COUNT_MAX   (16)
 Maximum number of arguments for a term.
 
#define FLECS_QUERY_VARIABLE_COUNT_MAX   (64)
 Maximum number of query variables per query.
 
#define FLECS_QUERY_SCOPE_NESTING_MAX   (8)
 Maximum nesting depth of query scopes.
 
#define EcsSelf   (1llu << 63)
 Match on self.
 
#define EcsUp   (1llu << 62)
 Match by traversing upwards.
 
#define EcsTrav   (1llu << 61)
 Traverse relationship transitively.
 
#define EcsCascade   (1llu << 60)
 Sort results breadth first.
 
#define EcsDesc   (1llu << 59)
 Iterate groups in descending order.
 
#define EcsIsVariable   (1llu << 58)
 Term id is a variable.
 
#define EcsIsEntity   (1llu << 57)
 Term id is an entity.
 
#define EcsIsName   (1llu << 56)
 Term id is a name (don't attempt to lookup as entity).
 
#define EcsTraverseFlags   (EcsSelf|EcsUp|EcsTrav|EcsCascade|EcsDesc)
 All term traversal flags.
 
#define EcsTermRefFlags   (EcsTraverseFlags|EcsIsVariable|EcsIsEntity|EcsIsName)
 All term reference kind flags.
 
#define ECS_TYPE_HOOK_CTOR   (1 << 0)
 Type that contains component lifecycle callbacks.
 
#define ECS_TYPE_HOOK_DTOR   (1 << 1)
 
#define ECS_TYPE_HOOK_COPY   (1 << 2)
 
#define ECS_TYPE_HOOK_MOVE   (1 << 3)
 
#define ECS_TYPE_HOOK_COPY_CTOR   (1 << 4)
 
#define ECS_TYPE_HOOK_MOVE_CTOR   (1 << 5)
 
#define ECS_TYPE_HOOK_CTOR_MOVE_DTOR   (1 << 6)
 
#define ECS_TYPE_HOOK_MOVE_DTOR   (1 << 7)
 
#define ECS_TYPE_HOOK_CTOR_ILLEGAL   (1 << 8)
 
#define ECS_TYPE_HOOK_DTOR_ILLEGAL   (1 << 9)
 
#define ECS_TYPE_HOOK_COPY_ILLEGAL   (1 << 10)
 
#define ECS_TYPE_HOOK_MOVE_ILLEGAL   (1 << 11)
 
#define ECS_TYPE_HOOK_COPY_CTOR_ILLEGAL   (1 << 12)
 
#define ECS_TYPE_HOOK_MOVE_CTOR_ILLEGAL   (1 << 13)
 
#define ECS_TYPE_HOOK_CTOR_MOVE_DTOR_ILLEGAL   (1 << 14)
 
#define ECS_TYPE_HOOK_MOVE_DTOR_ILLEGAL   (1 << 15)
 
#define ECS_TYPE_HOOKS
 
#define ECS_TYPE_HOOKS_ILLEGAL
 
#define EcsQueryMatchPrefab   (1u << 1u)
 Query must match prefabs.
 
#define EcsQueryMatchDisabled   (1u << 2u)
 Query must match disabled entities.
 
#define EcsQueryMatchEmptyTables   (1u << 3u)
 Query must match empty tables.
 
#define EcsQueryAllowUnresolvedByName   (1u << 6u)
 Query may have unresolved entity identifiers.
 
#define EcsQueryTableOnly   (1u << 7u)
 Query only returns whole tables (ignores toggle/member fields).
 
#define EcsSingleton   EcsVariable
 Shortcut as EcsVariable is typically used as source for singleton terms.
 
#define EcsLastInternalComponentId   (ecs_id(EcsPoly))
 Value used to quickly check if component is builtin.
 
#define EcsFirstUserComponentId   (8)
 The first user-defined component starts from this id.
 
#define EcsFirstUserEntityId   (FLECS_HI_COMPONENT_ID + 128)
 The first user-defined entity starts from this id.
 
#define flecs_poly_is(object, type)    flecs_poly_is_(object, type##_magic)
 Test if pointer is of specified type.
 

Typedefs

typedef uint64_t ecs_id_t
 Ids are the things that can be added to an entity.
 
typedef ecs_id_t ecs_entity_t
 An entity identifier.
 
typedef struct ecs_world_t ecs_world_t
 A world is the container for all ECS data and supporting features.
 
typedef struct ecs_stage_t ecs_stage_t
 A stage enables modification while iterating and from multiple threads.
 
typedef struct ecs_table_t ecs_table_t
 A table stores entities and components for a specific type.
 
typedef struct ecs_term_t ecs_term_t
 A term is a single element in a query.
 
typedef struct ecs_query_t ecs_query_t
 A query returns entities matching a list of constraints.
 
typedef struct ecs_observer_t ecs_observer_t
 An observer is a system that is invoked when an event matches its query.
 
typedef struct ecs_observable_t ecs_observable_t
 An observable produces events that can be listened for by an observer.
 
typedef struct ecs_iter_t ecs_iter_t
 Type used for iterating iterable objects.
 
typedef struct ecs_ref_t ecs_ref_t
 A ref is a fast way to fetch a component for a specific entity.
 
typedef struct ecs_type_hooks_t ecs_type_hooks_t
 Type hooks are callbacks associated with component lifecycle events.
 
typedef struct ecs_type_info_t ecs_type_info_t
 Type information.
 
typedef struct ecs_record_t ecs_record_t
 Information about an entity, like its table and row.
 
typedef struct ecs_id_record_t ecs_id_record_t
 Information about a (component) id, such as type info and tables with the id.
 
typedef void ecs_poly_t
 A poly object.
 
typedef struct ecs_mixins_t ecs_mixins_t
 Type that stores poly mixins.
 
typedef struct ecs_header_t ecs_header_t
 Header for ecs_poly_t objects.
 
typedef struct ecs_table_cache_hdr_t ecs_table_cache_hdr_t
 Header for table cache elements.
 
typedef struct ecs_table_record_t ecs_table_record_t
 Metadata describing where a component id is stored in a table.
 
typedef void(* ecs_run_action_t) (ecs_iter_t *it)
 Function prototype for runnables (systems, observers).
 
typedef void(* ecs_iter_action_t) (ecs_iter_t *it)
 Function prototype for iterables.
 
typedef bool(* ecs_iter_next_action_t) (ecs_iter_t *it)
 Function prototype for iterating an iterator.
 
typedef void(* ecs_iter_fini_action_t) (ecs_iter_t *it)
 Function prototype for freeing an iterator.
 
typedef int(* ecs_order_by_action_t) (ecs_entity_t e1, const void *ptr1, ecs_entity_t e2, const void *ptr2)
 Callback used for comparing components.
 
typedef void(* ecs_sort_table_action_t) (ecs_world_t *world, ecs_table_t *table, ecs_entity_t *entities, void *ptr, int32_t size, int32_t lo, int32_t hi, ecs_order_by_action_t order_by)
 Callback used for sorting the entire table of components.
 
typedef uint64_t(* ecs_group_by_action_t) (ecs_world_t *world, ecs_table_t *table, ecs_id_t group_id, void *ctx)
 Callback used for grouping tables in a query.
 
typedef void *(* ecs_group_create_action_t) (ecs_world_t *world, uint64_t group_id, void *group_by_ctx)
 Callback invoked when a query creates a new group.
 
typedef void(* ecs_group_delete_action_t) (ecs_world_t *world, uint64_t group_id, void *group_ctx, void *group_by_ctx)
 Callback invoked when a query deletes an existing group.
 
typedef void(* ecs_module_action_t) (ecs_world_t *world)
 Initialization action for modules.
 
typedef void(* ecs_fini_action_t) (ecs_world_t *world, void *ctx)
 Action callback on world exit.
 
typedef void(* ecs_ctx_free_t) (void *ctx)
 Function to cleanup context data.
 
typedef int(* ecs_compare_action_t) (const void *ptr1, const void *ptr2)
 Callback used for sorting values.
 
typedef uint64_t(* ecs_hash_value_action_t) (const void *ptr)
 Callback used for hashing values.
 
typedef void(* ecs_xtor_t) (void *ptr, int32_t count, const ecs_type_info_t *type_info)
 Constructor/destructor callback.
 
typedef void(* ecs_copy_t) (void *dst_ptr, const void *src_ptr, int32_t count, const ecs_type_info_t *type_info)
 Copy is invoked when a component is copied into another component.
 
typedef void(* ecs_move_t) (void *dst_ptr, void *src_ptr, int32_t count, const ecs_type_info_t *type_info)
 Move is invoked when a component is moved to another component.
 
typedef void(* flecs_poly_dtor_t) (ecs_poly_t *poly)
 Destructor function for poly objects.
 
typedef enum ecs_inout_kind_t ecs_inout_kind_t
 Specify read/write access for term.
 
typedef enum ecs_oper_kind_t ecs_oper_kind_t
 Specify operator for term.
 
typedef enum ecs_query_cache_kind_t ecs_query_cache_kind_t
 Specify cache policy for query.
 
typedef struct ecs_term_ref_t ecs_term_ref_t
 Type that describes a reference to an entity or variable in a term.
 
typedef struct ecs_value_t ecs_value_t
 Utility to hold a value of a dynamic type.
 
typedef struct ecs_entity_desc_t ecs_entity_desc_t
 Used with ecs_entity_init().
 
typedef struct ecs_bulk_desc_t ecs_bulk_desc_t
 Used with ecs_bulk_init().
 
typedef struct ecs_component_desc_t ecs_component_desc_t
 Used with ecs_component_init().
 
typedef struct ecs_query_desc_t ecs_query_desc_t
 Used with ecs_query_init().
 
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().
 
typedef struct ecs_build_info_t ecs_build_info_t
 Type with information about the current Flecs build.
 
typedef struct ecs_world_info_t ecs_world_info_t
 Type that contains information about the world.
 
typedef struct ecs_query_group_info_t ecs_query_group_info_t
 Type that contains information about a query group.
 
typedef struct EcsIdentifier EcsIdentifier
 A (string) identifier.
 
typedef struct EcsComponent EcsComponent
 Component information.
 
typedef struct EcsPoly EcsPoly
 Component for storing a poly object.
 
typedef struct EcsDefaultChildComponent EcsDefaultChildComponent
 When added to an entity this informs serialization formats which component to use when a value is assigned to an entity without specifying the component.
 
typedef struct ecs_entities_t ecs_entities_t
 Type returned by ecs_get_entities().
 
typedef struct ecs_query_count_t ecs_query_count_t
 Struct returned by ecs_query_count().
 

Enumerations

enum  ecs_inout_kind_t {
  EcsInOutDefault , EcsInOutNone , EcsInOutFilter , EcsInOut ,
  EcsIn , EcsOut
}
 Specify read/write access for term. More...
 
enum  ecs_oper_kind_t {
  EcsAnd , EcsOr , EcsNot , EcsOptional ,
  EcsAndFrom , EcsOrFrom , EcsNotFrom
}
 Specify operator for term. More...
 
enum  ecs_query_cache_kind_t { EcsQueryCacheDefault , EcsQueryCacheAuto , EcsQueryCacheAll , EcsQueryCacheNone }
 Specify cache policy for query. More...
 

Functions

ecs_world_tecs_init (void)
 Create a new world.
 
ecs_world_tecs_mini (void)
 Create a new world with just the core module.
 
ecs_world_tecs_init_w_args (int argc, char *argv[])
 Create a new world with arguments.
 
int ecs_fini (ecs_world_t *world)
 Delete a world.
 
bool ecs_is_fini (const ecs_world_t *world)
 Returns whether the world is being deleted.
 
void ecs_atfini (ecs_world_t *world, ecs_fini_action_t action, void *ctx)
 Register action to be executed when world is destroyed.
 
ecs_entities_t ecs_get_entities (const ecs_world_t *world)
 Return entity identifiers in world.
 
ecs_flags32_t ecs_world_get_flags (const ecs_world_t *world)
 Get flags set on the world.
 
float ecs_frame_begin (ecs_world_t *world, float delta_time)
 Begin frame.
 
void ecs_frame_end (ecs_world_t *world)
 End frame.
 
void ecs_run_post_frame (ecs_world_t *world, ecs_fini_action_t action, void *ctx)
 Register action to be executed once after frame.
 
void ecs_quit (ecs_world_t *world)
 Signal exit This operation signals that the application should quit.
 
bool ecs_should_quit (const ecs_world_t *world)
 Return whether a quit has been requested.
 
void ecs_measure_frame_time (ecs_world_t *world, bool enable)
 Measure frame time.
 
void ecs_measure_system_time (ecs_world_t *world, bool enable)
 Measure system time.
 
void ecs_set_target_fps (ecs_world_t *world, float fps)
 Set target frames per second (FPS) for application.
 
void ecs_set_default_query_flags (ecs_world_t *world, ecs_flags32_t flags)
 Set default query flags.
 
bool ecs_readonly_begin (ecs_world_t *world, bool multi_threaded)
 Begin readonly mode.
 
void ecs_readonly_end (ecs_world_t *world)
 End readonly mode.
 
void ecs_merge (ecs_world_t *world)
 Merge world or stage.
 
bool ecs_defer_begin (ecs_world_t *world)
 Defer operations until end of frame.
 
bool ecs_is_deferred (const ecs_world_t *world)
 Test if deferring is enabled for current stage.
 
bool ecs_defer_end (ecs_world_t *world)
 End block of operations to defer.
 
void ecs_defer_suspend (ecs_world_t *world)
 Suspend deferring but do not flush queue.
 
void ecs_defer_resume (ecs_world_t *world)
 Resume deferring.
 
void ecs_set_stage_count (ecs_world_t *world, int32_t stages)
 Configure world to have N stages.
 
int32_t ecs_get_stage_count (const ecs_world_t *world)
 Get number of configured stages.
 
ecs_world_tecs_get_stage (const ecs_world_t *world, int32_t stage_id)
 Get stage-specific world pointer.
 
bool ecs_stage_is_readonly (const ecs_world_t *world)
 Test whether the current world is readonly.
 
ecs_world_tecs_stage_new (ecs_world_t *world)
 Create unmanaged stage.
 
void ecs_stage_free (ecs_world_t *stage)
 Free unmanaged stage.
 
int32_t ecs_stage_get_id (const ecs_world_t *world)
 Get stage id.
 
void ecs_set_ctx (ecs_world_t *world, void *ctx, ecs_ctx_free_t ctx_free)
 Set a world context.
 
void ecs_set_binding_ctx (ecs_world_t *world, void *ctx, ecs_ctx_free_t ctx_free)
 Set a world binding context.
 
void * ecs_get_ctx (const ecs_world_t *world)
 Get the world context.
 
void * ecs_get_binding_ctx (const ecs_world_t *world)
 Get the world binding context.
 
const ecs_build_info_tecs_get_build_info (void)
 Get build info.
 
const ecs_world_info_tecs_get_world_info (const ecs_world_t *world)
 Get world info.
 
void ecs_dim (ecs_world_t *world, int32_t entity_count)
 Dimension the world for a specified number of entities.
 
void ecs_set_entity_range (ecs_world_t *world, ecs_entity_t id_start, ecs_entity_t id_end)
 Set a range for issuing new entity ids.
 
bool ecs_enable_range_check (ecs_world_t *world, bool enable)
 Enable/disable range limits.
 
ecs_entity_t ecs_get_max_id (const ecs_world_t *world)
 Get the largest issued entity id (not counting generation).
 
void ecs_run_aperiodic (ecs_world_t *world, ecs_flags32_t flags)
 Force aperiodic actions.
 
int32_t ecs_delete_empty_tables (ecs_world_t *world, ecs_id_t id, uint16_t clear_generation, uint16_t delete_generation, int32_t min_id_count, double time_budget_seconds)
 Cleanup empty tables.
 
const ecs_world_tecs_get_world (const ecs_poly_t *poly)
 Get world from poly.
 
ecs_entity_t ecs_get_entity (const ecs_poly_t *poly)
 Get entity from poly.
 
bool flecs_poly_is_ (const ecs_poly_t *object, int32_t type)
 Test if pointer is of specified type.
 
ecs_id_t ecs_make_pair (ecs_entity_t first, ecs_entity_t second)
 Make a pair id.
 
ecs_entity_t ecs_new (ecs_world_t *world)
 Create new entity id.
 
ecs_entity_t ecs_new_low_id (ecs_world_t *world)
 Create new low id.
 
ecs_entity_t ecs_new_w_id (ecs_world_t *world, ecs_id_t id)
 Create new entity with (component) id.
 
ecs_entity_t ecs_new_w_table (ecs_world_t *world, ecs_table_t *table)
 Create new entity in table.
 
ecs_entity_t ecs_entity_init (ecs_world_t *world, const ecs_entity_desc_t *desc)
 Find or create an entity.
 
const ecs_entity_tecs_bulk_init (ecs_world_t *world, const ecs_bulk_desc_t *desc)
 Bulk create/populate new entities.
 
const ecs_entity_tecs_bulk_new_w_id (ecs_world_t *world, ecs_id_t id, int32_t count)
 Create N new entities.
 
ecs_entity_t ecs_clone (ecs_world_t *world, ecs_entity_t dst, ecs_entity_t src, bool copy_value)
 Clone an entity This operation clones the components of one entity into another entity.
 
void ecs_delete (ecs_world_t *world, ecs_entity_t entity)
 Delete an entity.
 
void ecs_delete_with (ecs_world_t *world, ecs_id_t id)
 Delete all entities with the specified id.
 
void ecs_add_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Add a (component) id to an entity.
 
void ecs_remove_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Remove a (component) id from an entity.
 
void ecs_auto_override_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Add auto override for (component) id.
 
void ecs_clear (ecs_world_t *world, ecs_entity_t entity)
 Clear all components.
 
void ecs_remove_all (ecs_world_t *world, ecs_id_t id)
 Remove all instances of the specified (component) id.
 
ecs_entity_t ecs_set_with (ecs_world_t *world, ecs_id_t id)
 Set current with id.
 
ecs_id_t ecs_get_with (const ecs_world_t *world)
 Get current with id.
 
void ecs_enable (ecs_world_t *world, ecs_entity_t entity, bool enabled)
 Enable or disable entity.
 
void ecs_enable_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id, bool enable)
 Enable or disable component.
 
bool ecs_is_enabled_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Test if component is enabled.
 
const void * ecs_get_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Get an immutable pointer to a component.
 
void * ecs_get_mut_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Get a mutable pointer to a component.
 
void * ecs_ensure_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Get a mutable pointer to a component.
 
void * ecs_ensure_modified_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Combines ensure + modified in single operation.
 
ecs_ref_t ecs_ref_init_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Create a component ref.
 
void * ecs_ref_get_id (const ecs_world_t *world, ecs_ref_t *ref, ecs_id_t id)
 Get component from ref.
 
void ecs_ref_update (const ecs_world_t *world, ecs_ref_t *ref)
 Update ref.
 
ecs_record_tecs_record_find (const ecs_world_t *world, ecs_entity_t entity)
 Find record for entity.
 
ecs_record_tecs_write_begin (ecs_world_t *world, ecs_entity_t entity)
 Begin exclusive write access to entity.
 
void ecs_write_end (ecs_record_t *record)
 End exclusive write access to entity.
 
const ecs_record_tecs_read_begin (ecs_world_t *world, ecs_entity_t entity)
 Begin read access to entity.
 
void ecs_read_end (const ecs_record_t *record)
 End read access to entity.
 
ecs_entity_t ecs_record_get_entity (const ecs_record_t *record)
 Get entity corresponding with record.
 
const void * ecs_record_get_id (const ecs_world_t *world, const ecs_record_t *record, ecs_id_t id)
 Get component from entity record.
 
void * ecs_record_ensure_id (ecs_world_t *world, ecs_record_t *record, ecs_id_t id)
 Same as ecs_record_get_id(), but returns a mutable pointer.
 
bool ecs_record_has_id (ecs_world_t *world, const ecs_record_t *record, ecs_id_t id)
 Test if entity for record has a (component) id.
 
void * ecs_record_get_by_column (const ecs_record_t *record, int32_t column, size_t size)
 Get component pointer from column/record.
 
void * ecs_emplace_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id, bool *is_new)
 Emplace a component.
 
void ecs_modified_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Signal that a component has been modified.
 
void ecs_set_id (ecs_world_t *world, ecs_entity_t entity, ecs_id_t id, size_t size, const void *ptr)
 Set the value of a component.
 
bool ecs_is_valid (const ecs_world_t *world, ecs_entity_t e)
 Test whether an entity is valid.
 
bool ecs_is_alive (const ecs_world_t *world, ecs_entity_t e)
 Test whether an entity is alive.
 
ecs_id_t ecs_strip_generation (ecs_entity_t e)
 Remove generation from entity id.
 
ecs_entity_t ecs_get_alive (const ecs_world_t *world, ecs_entity_t e)
 Get alive identifier.
 
void ecs_make_alive (ecs_world_t *world, ecs_entity_t entity)
 Ensure id is alive.
 
void ecs_make_alive_id (ecs_world_t *world, ecs_id_t id)
 Same as ecs_make_alive(), but for (component) ids.
 
bool ecs_exists (const ecs_world_t *world, ecs_entity_t entity)
 Test whether an entity exists.
 
void ecs_set_version (ecs_world_t *world, ecs_entity_t entity)
 Override the generation of an entity.
 
const ecs_type_tecs_get_type (const ecs_world_t *world, ecs_entity_t entity)
 Get the type of an entity.
 
ecs_table_tecs_get_table (const ecs_world_t *world, ecs_entity_t entity)
 Get the table of an entity.
 
char * ecs_type_str (const ecs_world_t *world, const ecs_type_t *type)
 Convert type to string.
 
char * ecs_table_str (const ecs_world_t *world, const ecs_table_t *table)
 Convert table to string.
 
char * ecs_entity_str (const ecs_world_t *world, ecs_entity_t entity)
 Convert entity to string.
 
bool ecs_has_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Test if an entity has an id.
 
bool ecs_owns_id (const ecs_world_t *world, ecs_entity_t entity, ecs_id_t id)
 Test if an entity owns an id.
 
ecs_entity_t ecs_get_target (const ecs_world_t *world, ecs_entity_t entity, ecs_entity_t rel, int32_t index)
 Get the target of a relationship.
 
ecs_entity_t ecs_get_parent (const ecs_world_t *world, ecs_entity_t entity)
 Get parent (target of ChildOf relationship) for entity.
 
ecs_entity_t ecs_get_target_for_id (const ecs_world_t *world, ecs_entity_t entity, ecs_entity_t rel, ecs_id_t id)
 Get the target of a relationship for a given id.
 
int32_t ecs_get_depth (const ecs_world_t *world, ecs_entity_t entity, ecs_entity_t rel)
 Return depth for entity in tree for the specified relationship.
 
int32_t ecs_count_id (const ecs_world_t *world, ecs_id_t entity)
 Count entities that have the specified id.
 
const char * ecs_get_name (const ecs_world_t *world, ecs_entity_t entity)
 Get the name of an entity.
 
const char * ecs_get_symbol (const ecs_world_t *world, ecs_entity_t entity)
 Get the symbol of an entity.
 
ecs_entity_t ecs_set_name (ecs_world_t *world, ecs_entity_t entity, const char *name)
 Set the name of an entity.
 
ecs_entity_t ecs_set_symbol (ecs_world_t *world, ecs_entity_t entity, const char *symbol)
 Set the symbol of an entity.
 
void ecs_set_alias (ecs_world_t *world, ecs_entity_t entity, const char *alias)
 Set alias for entity.
 
ecs_entity_t ecs_lookup (const ecs_world_t *world, const char *path)
 Lookup an entity by it's path.
 
ecs_entity_t ecs_lookup_child (const ecs_world_t *world, ecs_entity_t parent, const char *name)
 Lookup a child entity by name.
 
ecs_entity_t ecs_lookup_path_w_sep (const ecs_world_t *world, ecs_entity_t parent, const char *path, const char *sep, const char *prefix, bool recursive)
 Lookup an entity from a path.
 
ecs_entity_t ecs_lookup_symbol (const ecs_world_t *world, const char *symbol, bool lookup_as_path, bool recursive)
 Lookup an entity by its symbol name.
 
char * ecs_get_path_w_sep (const ecs_world_t *world, ecs_entity_t parent, ecs_entity_t child, const char *sep, const char *prefix)
 Get a path identifier for an entity.
 
void ecs_get_path_w_sep_buf (const ecs_world_t *world, ecs_entity_t parent, ecs_entity_t child, const char *sep, const char *prefix, ecs_strbuf_t *buf, bool escape)
 Write path identifier to buffer.
 
ecs_entity_t ecs_new_from_path_w_sep (ecs_world_t *world, ecs_entity_t parent, const char *path, const char *sep, const char *prefix)
 Find or create entity from path.
 
ecs_entity_t ecs_add_path_w_sep (ecs_world_t *world, ecs_entity_t entity, ecs_entity_t parent, const char *path, const char *sep, const char *prefix)
 Add specified path to entity.
 
ecs_entity_t ecs_set_scope (ecs_world_t *world, ecs_entity_t scope)
 Set the current scope.
 
ecs_entity_t ecs_get_scope (const ecs_world_t *world)
 Get the current scope.
 
const char * ecs_set_name_prefix (ecs_world_t *world, const char *prefix)
 Set a name prefix for newly created entities.
 
ecs_entity_tecs_set_lookup_path (ecs_world_t *world, const ecs_entity_t *lookup_path)
 Set search path for lookup operations.
 
ecs_entity_tecs_get_lookup_path (const ecs_world_t *world)
 Get current lookup path.
 
ecs_entity_t ecs_component_init (ecs_world_t *world, const ecs_component_desc_t *desc)
 Find or create a component.
 
const ecs_type_info_tecs_get_type_info (const ecs_world_t *world, ecs_id_t id)
 Get the type for an id.
 
void ecs_set_hooks_id (ecs_world_t *world, ecs_entity_t id, const ecs_type_hooks_t *hooks)
 Register hooks for component.
 
const ecs_type_hooks_tecs_get_hooks_id (const ecs_world_t *world, ecs_entity_t id)
 Get hooks for component.
 
bool ecs_id_is_tag (const ecs_world_t *world, ecs_id_t id)
 Returns whether specified id a tag.
 
bool ecs_id_in_use (const ecs_world_t *world, ecs_id_t id)
 Returns whether specified id is in use.
 
ecs_entity_t ecs_get_typeid (const ecs_world_t *world, ecs_id_t id)
 Get the type for an id.
 
bool ecs_id_match (ecs_id_t id, ecs_id_t pattern)
 Utility to match an id with a pattern.
 
bool ecs_id_is_pair (ecs_id_t id)
 Utility to check if id is a pair.
 
bool ecs_id_is_wildcard (ecs_id_t id)
 Utility to check if id is a wildcard.
 
bool ecs_id_is_valid (const ecs_world_t *world, ecs_id_t id)
 Utility to check if id is valid.
 
ecs_flags32_t ecs_id_get_flags (const ecs_world_t *world, ecs_id_t id)
 Get flags associated with id.
 
const char * ecs_id_flag_str (ecs_id_t id_flags)
 Convert id flag to string.
 
char * ecs_id_str (const ecs_world_t *world, ecs_id_t id)
 Convert (component) id to string.
 
void ecs_id_str_buf (const ecs_world_t *world, ecs_id_t id, ecs_strbuf_t *buf)
 Write (component) id string to buffer.
 
ecs_id_t ecs_id_from_str (const ecs_world_t *world, const char *expr)
 Convert string to a (component) id.
 
bool ecs_term_ref_is_set (const ecs_term_ref_t *id)
 Test whether term id is set.
 
bool ecs_term_is_initialized (const ecs_term_t *term)
 Test whether a term is set.
 
bool ecs_term_match_this (const ecs_term_t *term)
 Is term matched on $this variable.
 
bool ecs_term_match_0 (const ecs_term_t *term)
 Is term matched on 0 source.
 
char * ecs_term_str (const ecs_world_t *world, const ecs_term_t *term)
 Convert term to string expression.
 
char * ecs_query_str (const ecs_query_t *query)
 Convert query to string expression.
 
ecs_iter_t ecs_each_id (const ecs_world_t *world, ecs_id_t id)
 Iterate all entities with specified (component id).
 
bool ecs_each_next (ecs_iter_t *it)
 Progress an iterator created with ecs_each_id().
 
ecs_iter_t ecs_children (const ecs_world_t *world, ecs_entity_t parent)
 Iterate children of parent.
 
bool ecs_children_next (ecs_iter_t *it)
 Progress an iterator created with ecs_children().
 
ecs_query_tecs_query_init (ecs_world_t *world, const ecs_query_desc_t *desc)
 Create a query.
 
void ecs_query_fini (ecs_query_t *query)
 Delete a query.
 
int32_t ecs_query_find_var (const ecs_query_t *query, const char *name)
 Find variable index.
 
const char * ecs_query_var_name (const ecs_query_t *query, int32_t var_id)
 Get variable name.
 
bool ecs_query_var_is_entity (const ecs_query_t *query, int32_t var_id)
 Test if variable is an entity.
 
ecs_iter_t ecs_query_iter (const ecs_world_t *world, const ecs_query_t *query)
 Create a query iterator.
 
bool ecs_query_next (ecs_iter_t *it)
 Progress query iterator.
 
bool ecs_query_has (ecs_query_t *query, ecs_entity_t entity, ecs_iter_t *it)
 Match entity with query.
 
bool ecs_query_has_table (ecs_query_t *query, ecs_table_t *table, ecs_iter_t *it)
 Match table with query.
 
bool ecs_query_has_range (ecs_query_t *query, ecs_table_range_t *range, ecs_iter_t *it)
 Match range with query.
 
int32_t ecs_query_match_count (const ecs_query_t *query)
 Returns how often a match event happened for a cached query.
 
char * ecs_query_plan (const ecs_query_t *query)
 Convert query to a string.
 
char * ecs_query_plan_w_profile (const ecs_query_t *query, const ecs_iter_t *it)
 Convert query to string with profile.
 
const char * ecs_query_args_parse (ecs_query_t *query, ecs_iter_t *it, const char *expr)
 Populate variables from key-value string.
 
bool ecs_query_changed (ecs_query_t *query)
 Returns whether the query data changed since the last iteration.
 
void ecs_iter_skip (ecs_iter_t *it)
 Skip a table while iterating.
 
void ecs_iter_set_group (ecs_iter_t *it, uint64_t group_id)
 Set group to iterate for query iterator.
 
void * ecs_query_get_group_ctx (const ecs_query_t *query, uint64_t group_id)
 Get context of query group.
 
const ecs_query_group_info_tecs_query_get_group_info (const ecs_query_t *query, uint64_t group_id)
 Get information about query group.
 
ecs_query_count_t ecs_query_count (const ecs_query_t *query)
 Returns number of entities and results the query matches with.
 
bool ecs_query_is_true (const ecs_query_t *query)
 Does query return one or more results.
 
const ecs_query_tecs_query_get_cache_query (const ecs_query_t *query)
 Get query used to populate cache.
 
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)
 Enqueue event.
 
ecs_entity_t ecs_observer_init (ecs_world_t *world, const ecs_observer_desc_t *desc)
 Create observer.
 
const ecs_observer_tecs_observer_get (const ecs_world_t *world, ecs_entity_t observer)
 Get observer object.
 
bool ecs_iter_next (ecs_iter_t *it)
 Progress any iterator.
 
void ecs_iter_fini (ecs_iter_t *it)
 Cleanup iterator resources.
 
int32_t ecs_iter_count (ecs_iter_t *it)
 Count number of matched entities in query.
 
bool ecs_iter_is_true (ecs_iter_t *it)
 Test if iterator is true.
 
ecs_entity_t ecs_iter_first (ecs_iter_t *it)
 Get first matching entity from iterator.
 
void ecs_iter_set_var (ecs_iter_t *it, int32_t var_id, ecs_entity_t entity)
 Set value for iterator variable.
 
void ecs_iter_set_var_as_table (ecs_iter_t *it, int32_t var_id, const ecs_table_t *table)
 Same as ecs_iter_set_var(), but for a table.
 
void ecs_iter_set_var_as_range (ecs_iter_t *it, int32_t var_id, const ecs_table_range_t *range)
 Same as ecs_iter_set_var(), but for a range of entities This constrains the variable to a range of entities in a table.
 
ecs_entity_t ecs_iter_get_var (ecs_iter_t *it, int32_t var_id)
 Get value of iterator variable as entity.
 
ecs_table_tecs_iter_get_var_as_table (ecs_iter_t *it, int32_t var_id)
 Get value of iterator variable as table.
 
ecs_table_range_t ecs_iter_get_var_as_range (ecs_iter_t *it, int32_t var_id)
 Get value of iterator variable as table range.
 
bool ecs_iter_var_is_constrained (ecs_iter_t *it, int32_t var_id)
 Returns whether variable is constrained.
 
bool ecs_iter_changed (ecs_iter_t *it)
 Returns whether current iterator result has changed.
 
char * ecs_iter_str (const ecs_iter_t *it)
 Convert iterator to string.
 
ecs_iter_t ecs_page_iter (const ecs_iter_t *it, int32_t offset, int32_t limit)
 Create a paged iterator.
 
bool ecs_page_next (ecs_iter_t *it)
 Progress a paged iterator.
 
ecs_iter_t ecs_worker_iter (const ecs_iter_t *it, int32_t index, int32_t count)
 Create a worker iterator.
 
bool ecs_worker_next (ecs_iter_t *it)
 Progress a worker iterator.
 
void * ecs_field_w_size (const ecs_iter_t *it, size_t size, int8_t index)
 Get data for field.
 
void * ecs_field_at_w_size (const ecs_iter_t *it, size_t size, int8_t index, int32_t row)
 Get data for field at specified row.
 
bool ecs_field_is_readonly (const ecs_iter_t *it, int8_t index)
 Test whether the field is readonly.
 
bool ecs_field_is_writeonly (const ecs_iter_t *it, int8_t index)
 Test whether the field is writeonly.
 
bool ecs_field_is_set (const ecs_iter_t *it, int8_t index)
 Test whether field is set.
 
ecs_id_t ecs_field_id (const ecs_iter_t *it, int8_t index)
 Return id matched for field.
 
int32_t ecs_field_column (const ecs_iter_t *it, int8_t index)
 Return index of matched table column.
 
ecs_entity_t ecs_field_src (const ecs_iter_t *it, int8_t index)
 Return field source.
 
size_t ecs_field_size (const ecs_iter_t *it, int8_t index)
 Return field type size.
 
bool ecs_field_is_self (const ecs_iter_t *it, int8_t index)
 Test whether the field is matched on self.
 
const ecs_type_tecs_table_get_type (const ecs_table_t *table)
 Get type for table.
 
int32_t ecs_table_get_type_index (const ecs_world_t *world, const ecs_table_t *table, ecs_id_t id)
 Get type index for id.
 
int32_t ecs_table_get_column_index (const ecs_world_t *world, const ecs_table_t *table, ecs_id_t id)
 Get column index for id.
 
int32_t ecs_table_column_count (const ecs_table_t *table)
 Return number of columns in table.
 
int32_t ecs_table_type_to_column_index (const ecs_table_t *table, int32_t index)
 Convert type index to column index.
 
int32_t ecs_table_column_to_type_index (const ecs_table_t *table, int32_t index)
 Convert column index to type index.
 
void * ecs_table_get_column (const ecs_table_t *table, int32_t index, int32_t offset)
 Get column from table by column index.
 
void * ecs_table_get_id (const ecs_world_t *world, const ecs_table_t *table, ecs_id_t id, int32_t offset)
 Get column from table by component id.
 
size_t ecs_table_get_column_size (const ecs_table_t *table, int32_t index)
 Get column size from table.
 
int32_t ecs_table_count (const ecs_table_t *table)
 Returns the number of entities in the table.
 
int32_t ecs_table_size (const ecs_table_t *table)
 Returns allocated size of table.
 
const ecs_entity_tecs_table_entities (const ecs_table_t *table)
 Returns array with entity ids for table.
 
bool ecs_table_has_id (const ecs_world_t *world, const ecs_table_t *table, ecs_id_t id)
 Test if table has id.
 
int32_t ecs_table_get_depth (const ecs_world_t *world, const ecs_table_t *table, ecs_entity_t rel)
 Return depth for table in tree for relationship rel.
 
ecs_table_tecs_table_add_id (ecs_world_t *world, ecs_table_t *table, ecs_id_t id)
 Get table that has all components of current table plus the specified id.
 
ecs_table_tecs_table_find (ecs_world_t *world, const ecs_id_t *ids, int32_t id_count)
 Find table from id array.
 
ecs_table_tecs_table_remove_id (ecs_world_t *world, ecs_table_t *table, ecs_id_t id)
 Get table that has all components of current table minus the specified id.
 
void ecs_table_lock (ecs_world_t *world, ecs_table_t *table)
 Lock a table.
 
void ecs_table_unlock (ecs_world_t *world, ecs_table_t *table)
 Unlock a table.
 
bool ecs_table_has_flags (ecs_table_t *table, ecs_flags32_t flags)
 Test table for flags.
 
void ecs_table_swap_rows (ecs_world_t *world, ecs_table_t *table, int32_t row_1, int32_t row_2)
 Swaps two elements inside the table.
 
bool ecs_commit (ecs_world_t *world, ecs_entity_t entity, ecs_record_t *record, ecs_table_t *table, const ecs_type_t *added, const ecs_type_t *removed)
 Commit (move) entity to a table.
 
int32_t ecs_search (const ecs_world_t *world, const ecs_table_t *table, ecs_id_t id, ecs_id_t *id_out)
 Search for component id in table type.
 
int32_t ecs_search_offset (const ecs_world_t *world, const ecs_table_t *table, int32_t offset, ecs_id_t id, ecs_id_t *id_out)
 Search for component id in table type starting from an offset.
 
int32_t ecs_search_relation (const ecs_world_t *world, const ecs_table_t *table, int32_t offset, ecs_id_t id, ecs_entity_t rel, ecs_flags64_t flags, ecs_entity_t *subject_out, ecs_id_t *id_out, struct ecs_table_record_t **tr_out)
 Search for component/relationship id in table type starting from an offset.
 
void ecs_table_clear_entities (ecs_world_t *world, ecs_table_t *table)
 Remove all entities in a table.
 
int ecs_value_init (const ecs_world_t *world, ecs_entity_t type, void *ptr)
 Construct a value in existing storage.
 
int ecs_value_init_w_type_info (const ecs_world_t *world, const ecs_type_info_t *ti, void *ptr)
 Construct a value in existing storage.
 
void * ecs_value_new (ecs_world_t *world, ecs_entity_t type)
 Construct a value in new storage.
 
void * ecs_value_new_w_type_info (ecs_world_t *world, const ecs_type_info_t *ti)
 Construct a value in new storage.
 
int ecs_value_fini_w_type_info (const ecs_world_t *world, const ecs_type_info_t *ti, void *ptr)
 Destruct a value.
 
int ecs_value_fini (const ecs_world_t *world, ecs_entity_t type, void *ptr)
 Destruct a value.
 
int ecs_value_free (ecs_world_t *world, ecs_entity_t type, void *ptr)
 Destruct a value, free storage.
 
int ecs_value_copy_w_type_info (const ecs_world_t *world, const ecs_type_info_t *ti, void *dst, const void *src)
 Copy value.
 
int ecs_value_copy (const ecs_world_t *world, ecs_entity_t type, void *dst, const void *src)
 Copy value.
 
int ecs_value_move_w_type_info (const ecs_world_t *world, const ecs_type_info_t *ti, void *dst, void *src)
 Move value.
 
int ecs_value_move (const ecs_world_t *world, ecs_entity_t type, void *dst, void *src)
 Move value.
 
int ecs_value_move_ctor_w_type_info (const ecs_world_t *world, const ecs_type_info_t *ti, void *dst, void *src)
 Move construct value.
 
int ecs_value_move_ctor (const ecs_world_t *world, ecs_entity_t type, void *dst, void *src)
 Move construct value.
 

Variables

const ecs_id_t ECS_PAIR
 Indicates that the id is a pair.
 
const ecs_id_t ECS_AUTO_OVERRIDE
 Automatically override component when it is inherited.
 
const ecs_id_t ECS_TOGGLE
 Adds bitset to storage which allows component to be enabled/disabled.
 
const ecs_entity_t FLECS_IDEcsComponentID_
 Component component id.
 
const ecs_entity_t FLECS_IDEcsIdentifierID_
 Identifier component id.
 
const ecs_entity_t FLECS_IDEcsPolyID_
 Poly component id.
 
const ecs_entity_t FLECS_IDEcsDefaultChildComponentID_
 DefaultChildComponent component id.
 
const ecs_entity_t EcsQuery
 Tag added to queries.
 
const ecs_entity_t EcsObserver
 Tag added to observers.
 
const ecs_entity_t EcsSystem
 Tag added to systems.
 
const ecs_entity_t FLECS_IDEcsTickSourceID_
 TickSource component id.
 
const ecs_entity_t FLECS_IDEcsPipelineQueryID_
 Pipeline module component ids.
 
const ecs_entity_t FLECS_IDEcsTimerID_
 Timer component id.
 
const ecs_entity_t FLECS_IDEcsRateFilterID_
 RateFilter component id.
 
const ecs_entity_t EcsFlecs
 Root scope for builtin flecs entities.
 
const ecs_entity_t EcsFlecsCore
 Core module scope.
 
const ecs_entity_t EcsWorld
 Entity associated with world (used for "attaching" components to world)
 
const ecs_entity_t EcsWildcard
 Wildcard entity ("*").
 
const ecs_entity_t EcsAny
 Any entity ("_").
 
const ecs_entity_t EcsThis
 This entity.
 
const ecs_entity_t EcsVariable
 Variable entity ("$").
 
const ecs_entity_t EcsTransitive
 Marks a relationship as transitive.
 
const ecs_entity_t EcsReflexive
 Marks a relationship as reflexive.
 
const ecs_entity_t EcsFinal
 Ensures that entity/component cannot be used as target in IsA relationship.
 
const ecs_entity_t EcsOnInstantiate
 Relationship that specifies component inheritance behavior.
 
const ecs_entity_t EcsOverride
 Override component on instantiate.
 
const ecs_entity_t EcsInherit
 Inherit component on instantiate.
 
const ecs_entity_t EcsDontInherit
 Never inherit component on instantiate.
 
const ecs_entity_t EcsSymmetric
 Marks relationship as commutative.
 
const ecs_entity_t EcsExclusive
 Can be added to relationship to indicate that the relationship can only occur once on an entity.
 
const ecs_entity_t EcsAcyclic
 Marks a relationship as acyclic.
 
const ecs_entity_t EcsTraversable
 Marks a relationship as traversable.
 
const ecs_entity_t EcsWith
 Ensure that a component always is added together with another component.
 
const ecs_entity_t EcsOneOf
 Ensure that relationship target is child of specified entity.
 
const ecs_entity_t EcsCanToggle
 Mark a component as toggleable with ecs_enable_id().
 
const ecs_entity_t EcsTrait
 Can be added to components to indicate it is a trait.
 
const ecs_entity_t EcsRelationship
 Ensure that an entity is always used in pair as relationship.
 
const ecs_entity_t EcsTarget
 Ensure that an entity is always used in pair as target.
 
const ecs_entity_t EcsPairIsTag
 Can be added to relationship to indicate that it should never hold data, even when it or the relationship target is a component.
 
const ecs_entity_t EcsName
 Tag to indicate name identifier.
 
const ecs_entity_t EcsSymbol
 Tag to indicate symbol identifier.
 
const ecs_entity_t EcsAlias
 Tag to indicate alias identifier.
 
const ecs_entity_t EcsChildOf
 Used to express parent-child relationships.
 
const ecs_entity_t EcsIsA
 Used to express inheritance relationships.
 
const ecs_entity_t EcsDependsOn
 Used to express dependency relationships.
 
const ecs_entity_t EcsSlotOf
 Used to express a slot (used with prefab inheritance)
 
const ecs_entity_t EcsModule
 Tag added to module entities.
 
const ecs_entity_t EcsPrivate
 Tag to indicate an entity/component/system is private to a module.
 
const ecs_entity_t EcsPrefab
 Tag added to prefab entities.
 
const ecs_entity_t EcsDisabled
 When this tag is added to an entity it is skipped by queries, unless EcsDisabled is explicitly queried for.
 
const ecs_entity_t EcsNotQueryable
 Trait added to entities that should never be returned by queries.
 
const ecs_entity_t EcsOnAdd
 Event that triggers when an id is added to an entity.
 
const ecs_entity_t EcsOnRemove
 Event that triggers when an id is removed from an entity.
 
const ecs_entity_t EcsOnSet
 Event that triggers when a component is set for an entity.
 
const ecs_entity_t EcsMonitor
 Event that triggers observer when an entity starts/stops matching a query.
 
const ecs_entity_t EcsOnTableCreate
 Event that triggers when a table is created.
 
const ecs_entity_t EcsOnTableDelete
 Event that triggers when a table is deleted.
 
const ecs_entity_t EcsOnTableEmpty
 Event that triggers when a table becomes empty (doesn't emit on creation).
 
const ecs_entity_t EcsOnTableFill
 Event that triggers when a table becomes non-empty.
 
const ecs_entity_t EcsOnDelete
 Relationship used for specifying cleanup behavior.
 
const ecs_entity_t EcsOnDeleteTarget
 Relationship used to define what should happen when a target entity (second element of a pair) is deleted.
 
const ecs_entity_t EcsRemove
 Remove cleanup policy.
 
const ecs_entity_t EcsDelete
 Delete cleanup policy.
 
const ecs_entity_t EcsPanic
 Panic cleanup policy.
 
const ecs_entity_t EcsSparse
 Mark component as sparse.
 
const ecs_entity_t EcsUnion
 Mark relationship as union.
 
const ecs_entity_t EcsPredEq
 Marker used to indicate $var == ... matching in queries.
 
const ecs_entity_t EcsPredMatch
 Marker used to indicate $var == "name" matching in queries.
 
const ecs_entity_t EcsPredLookup
 Marker used to indicate $var ~= "pattern" matching in queries.
 
const ecs_entity_t EcsScopeOpen
 Marker used to indicate the start of a scope ({) in queries.
 
const ecs_entity_t EcsScopeClose
 Marker used to indicate the end of a scope (}) in queries.
 
const ecs_entity_t EcsEmpty
 Tag used to indicate query is empty.
 
const ecs_entity_t FLECS_IDEcsPipelineID_
 Pipeline component id.
 
const ecs_entity_t EcsOnStart
 OnStart pipeline phase.
 
const ecs_entity_t EcsPreFrame
 PreFrame pipeline phase.
 
const ecs_entity_t EcsOnLoad
 OnLoad pipeline phase.
 
const ecs_entity_t EcsPostLoad
 PostLoad pipeline phase.
 
const ecs_entity_t EcsPreUpdate
 PreUpdate pipeline phase.
 
const ecs_entity_t EcsOnUpdate
 OnUpdate pipeline phase.
 
const ecs_entity_t EcsOnValidate
 OnValidate pipeline phase.
 
const ecs_entity_t EcsPostUpdate
 PostUpdate pipeline phase.
 
const ecs_entity_t EcsPreStore
 PreStore pipeline phase.
 
const ecs_entity_t EcsOnStore
 OnStore pipeline phase.
 
const ecs_entity_t EcsPostFrame
 PostFrame pipeline phase.
 
const ecs_entity_t EcsPhase
 Phase pipeline phase.
 

Detailed Description

Flecs public API.

This file contains the public API for Flecs.

Definition in file flecs.h.