Flecs: include/flecs.h File Reference
Description: A fast entity component system (ECS) for C & C++

| Flecs v4.0 A fast entity component system (ECS) for C & C++

Loading...
Searching...
No Matches
Classes | Macros | Typedefs | Enumerations | Functions | Variables
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_delete_empty_tables_desc_t
| Used with ecs_delete_empty_tables(). 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 4
| 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_ALERTS
| Monitor conditions for errors.
#define | FLECS_APP
| Application addon.
#define | FLECS_CPP
| C++ API.
#define | FLECS_DOC
| Document entities & components.
#define | FLECS_JSON
| Parsing JSON to/from component values.
#define | FLECS_HTTP
| Tiny HTTP server for connecting to remote UI.
#define | FLECS_LOG
| When enabled ECS provides more detailed logs.
#define | FLECS_META
| Reflection support.
#define | FLECS_METRICS
| Expose component data as statistics.
#define | FLECS_MODULE
| Module support.
#define | FLECS_OS_API_IMPL
| Default implementation for OS API.
#define | FLECS_PIPELINE
| Pipeline support.
#define | FLECS_REST
| REST API for querying application data.
#define | FLECS_SCRIPT
| Flecs entity notation language.
#define | FLECS_SYSTEM
| System support.
#define | FLECS_STATS
| Track runtime statistics.
#define | FLECS_TIMER
| Timer support.
#define | FLECS_UNITS
| Builtin standard units.
#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 | FLECS_DAG_DEPTH_MAX (128)
| Maximum of levels in a DAG (acyclic relationship graph).
#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)
| 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_delete_empty_tables_desc_t | ecs_delete_empty_tables_desc_t
| Used with ecs_delete_empty_tables().
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_t * | ecs_init (void)
| Create a new world.
ecs_world_t * | ecs_mini (void)
| Create a new world with just the core module.
ecs_world_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_get_build_info (void)
| Get build info.
const ecs_world_info_t * | ecs_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, const ecs_delete_empty_tables_desc_t *desc)
| Cleanup empty tables.
const ecs_world_t * | ecs_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_t * | ecs_bulk_init (ecs_world_t *world, const ecs_bulk_desc_t *desc)
| Bulk create/populate new entities.
const ecs_entity_t * | ecs_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_t * | ecs_record_find (const ecs_world_t *world, ecs_entity_t entity)
| Find record for entity.
ecs_record_t * | ecs_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_t * | ecs_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_t * | ecs_get_type (const ecs_world_t *world, ecs_entity_t entity)
| Get the type of an entity.
ecs_table_t * | ecs_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_t * | ecs_set_lookup_path (ecs_world_t *world, const ecs_entity_t *lookup_path)
| Set search path for lookup operations.
ecs_entity_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_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.
const ecs_query_t * | ecs_query_get (const ecs_world_t *world, ecs_entity_t query)
| Get query object.
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_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_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_t * | ecs_table_find (ecs_world_t *world, const ecs_id_t *ids, int32_t id_count)
| Find table from id array.
ecs_table_t * | ecs_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 | 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.