Flecs v3.2
A fast entity component system (ECS) for C & C++
Loading...
Searching...
No Matches
c_types.hpp
Go to the documentation of this file.
1
6#pragma once
7
8namespace flecs {
9
18using world_t = ecs_world_t;
19using world_info_t = ecs_world_info_t;
20using query_group_info_t = ecs_query_group_info_t;
21using id_t = ecs_id_t;
22using entity_t = ecs_entity_t;
23using type_t = ecs_type_t;
24using table_t = ecs_table_t;
25using filter_t = ecs_filter_t;
26using observer_t = ecs_observer_t;
27using query_t = ecs_query_t;
28using rule_t = ecs_rule_t;
29using ref_t = ecs_ref_t;
30using iter_t = ecs_iter_t;
31using type_info_t = ecs_type_info_t;
32using type_hooks_t = ecs_type_hooks_t;
33using flags32_t = ecs_flags32_t;
34
35enum inout_kind_t {
36 InOutDefault = EcsInOutDefault,
37 InOutNone = EcsInOutNone,
38 InOut = EcsInOut,
39 In = EcsIn,
40 Out = EcsOut
41};
42
43enum oper_kind_t {
44 And = EcsAnd,
45 Or = EcsOr,
46 Not = EcsNot,
47 Optional = EcsOptional,
48 AndFrom = EcsAndFrom,
49 OrFrom = EcsOrFrom,
50 NotFrom = EcsNotFrom
51};
52
54static const flecs::entity_t Pair = ECS_PAIR;
55static const flecs::entity_t Override = ECS_OVERRIDE;
56static const flecs::entity_t Toggle = ECS_TOGGLE;
57
61
62/* Builtin components */
63using Component = EcsComponent;
64using Identifier = EcsIdentifier;
65using Poly = EcsPoly;
66using Target = EcsTarget;
67
68/* Builtin tags */
69static const flecs::entity_t Query = EcsQuery;
70static const flecs::entity_t Observer = EcsObserver;
71static const flecs::entity_t Private = EcsPrivate;
72static const flecs::entity_t Module = EcsModule;
73static const flecs::entity_t Prefab = EcsPrefab;
74static const flecs::entity_t Disabled = EcsDisabled;
75static const flecs::entity_t Empty = EcsEmpty;
76static const flecs::entity_t Monitor = EcsMonitor;
77static const flecs::entity_t System = EcsSystem;
78static const flecs::entity_t Pipeline = ecs_id(EcsPipeline);
79static const flecs::entity_t Phase = EcsPhase;
80
81/* Builtin event tags */
82static const flecs::entity_t OnAdd = EcsOnAdd;
83static const flecs::entity_t OnRemove = EcsOnRemove;
84static const flecs::entity_t OnSet = EcsOnSet;
85static const flecs::entity_t UnSet = EcsUnSet;
86static const flecs::entity_t OnTableCreate = EcsOnTableCreate;
87static const flecs::entity_t OnTableDelete = EcsOnTableDelete;
88
89/* Builtin term flags */
90static const uint32_t Self = EcsSelf;
91static const uint32_t Up = EcsUp;
92static const uint32_t Down = EcsDown;
93static const uint32_t Cascade = EcsCascade;
94static const uint32_t Parent = EcsParent;
95static const uint32_t IsVariable = EcsIsVariable;
96static const uint32_t IsEntity = EcsIsEntity;
97static const uint32_t Filter = EcsFilter;
98static const uint32_t TraverseFlags = EcsTraverseFlags;
99
100/* Builtin entity ids */
101static const flecs::entity_t Flecs = EcsFlecs;
102static const flecs::entity_t FlecsCore = EcsFlecsCore;
103static const flecs::entity_t World = EcsWorld;
104
105/* Relationship properties */
106static const flecs::entity_t Wildcard = EcsWildcard;
107static const flecs::entity_t Any = EcsAny;
108static const flecs::entity_t This = EcsThis;
109static const flecs::entity_t Transitive = EcsTransitive;
110static const flecs::entity_t Reflexive = EcsReflexive;
111static const flecs::entity_t Final = EcsFinal;
112static const flecs::entity_t DontInherit = EcsDontInherit;
113static const flecs::entity_t Tag = EcsTag;
114static const flecs::entity_t Union = EcsUnion;
115static const flecs::entity_t Exclusive = EcsExclusive;
116static const flecs::entity_t Acyclic = EcsAcyclic;
117static const flecs::entity_t Traversable = EcsTraversable;
118static const flecs::entity_t Symmetric = EcsSymmetric;
119static const flecs::entity_t With = EcsWith;
120static const flecs::entity_t OneOf = EcsOneOf;
121
122/* Builtin relationships */
123static const flecs::entity_t IsA = EcsIsA;
124static const flecs::entity_t ChildOf = EcsChildOf;
125static const flecs::entity_t DependsOn = EcsDependsOn;
126static const flecs::entity_t SlotOf = EcsSlotOf;
127
128/* Builtin identifiers */
129static const flecs::entity_t Name = EcsName;
130static const flecs::entity_t Symbol = EcsSymbol;
131
132/* Cleanup policies */
133static const flecs::entity_t OnDelete = EcsOnDelete;
134static const flecs::entity_t OnDeleteTarget = EcsOnDeleteTarget;
135static const flecs::entity_t Remove = EcsRemove;
136static const flecs::entity_t Delete = EcsDelete;
137static const flecs::entity_t Panic = EcsPanic;
138
139/* Misc */
140static const flecs::entity_t Flatten = EcsFlatten;
141static const flecs::entity_t DefaultChildComponent = EcsDefaultChildComponent;
142
143/* Builtin predicates for comparing entity ids in queries. Only supported by rules */
144static const flecs::entity_t PredEq = EcsPredEq;
145static const flecs::entity_t PredMatch = EcsPredMatch;
146static const flecs::entity_t PredLookup = EcsPredLookup;
147
150}
const ecs_entity_t EcsOnRemove
Event.
const ecs_entity_t EcsThis
This entity.
const ecs_entity_t EcsWildcard
Wildcard entity ("*").
const ecs_entity_t EcsName
Tag to indicate name identifier.
const ecs_entity_t EcsAcyclic
Marks a relationship as acyclic.
const ecs_entity_t EcsSymmetric
Marks relationship as commutative.
const ecs_entity_t EcsOnSet
Event.
const ecs_entity_t EcsReflexive
Marks a relatoinship as reflexive.
const ecs_entity_t EcsEmpty
Tag used to indicate query is empty.
const ecs_entity_t EcsOneOf
Ensure that relationship target is child of specified entity.
const ecs_entity_t EcsOnTableDelete
Event.
const ecs_entity_t EcsOnTableCreate
Event.
const ecs_entity_t EcsTraversable
Marks a relationship as traversable.
const ecs_entity_t EcsUnSet
Event.
const ecs_entity_t EcsIsA
Used to express inheritance relationships.
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 EcsSymbol
Tag to indicate symbol identifier.
const ecs_entity_t EcsDependsOn
Used to express dependency relationships.
const ecs_entity_t EcsTransitive
Marks a relationship as transitive.
const ecs_entity_t EcsDelete
Delete cleanup policy.
const ecs_entity_t EcsChildOf
Used to express parent-child relationships.
const ecs_entity_t EcsFlecsCore
Core module scope.
const ecs_entity_t EcsMonitor
Event.
const ecs_entity_t EcsWorld
Entity associated with world (used for "attaching" components to world)
const ecs_entity_t EcsPrivate
Tag to indicate an entity/component/system is private to a module.
const ecs_entity_t EcsRemove
Remove cleanup policy.
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 EcsOnAdd
Event.
const ecs_entity_t EcsPrefab
Tag added to prefab entities.
const ecs_entity_t EcsUnion
Tag to indicate that relationship is stored as union.
const ecs_entity_t EcsAny
Any entity ("_").
const ecs_entity_t EcsWith
Ensure that a component always is added together with another component.
const ecs_entity_t EcsTag
Can be added to relationship to indicate that it should never hold data, even when it or the relation...
const ecs_entity_t EcsOnDelete
Event.
const ecs_entity_t EcsOnDeleteTarget
Relationship used to define what should happen when a target entity (second element of a pair) is del...
const ecs_entity_t EcsFlecs
Root scope for builtin flecs entities.
const ecs_entity_t EcsDisabled
When this tag is added to an entity it is skipped by all queries/filters.
const ecs_entity_t EcsDontInherit
Ensures that component is never inherited from an IsA target.
const ecs_entity_t EcsPanic
Panic cleanup policy.
const ecs_entity_t EcsDefaultChildComponent
Used like (EcsDefaultChildComponent, Component).
const ecs_entity_t EcsFinal
Ensures that entity/component cannot be used as target in IsA relationship.
struct ecs_ref_t ecs_ref_t
Refs cache data that lets them access components faster than ecs_get.
Definition: flecs.h:313
ecs_id_t ecs_entity_t
An entity identifier.
Definition: flecs.h:277
struct ecs_rule_t ecs_rule_t
A rule implements a non-trivial filter.
Definition: flecs.h:301
struct ecs_world_t ecs_world_t
A world is the container for all ECS data and supporting features.
Definition: flecs.h:286
uint64_t ecs_id_t
An id.
Definition: flecs.h:274
struct ecs_query_t ecs_query_t
A query allows for cached iteration over ECS data.
Definition: flecs.h:295
struct ecs_table_t ecs_table_t
A table is where entities and components are stored.
Definition: flecs.h:289
const ecs_id_t ECS_PAIR
Indicates that the id is a pair.
const ecs_id_t ECS_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.
#define EcsParent
Short for up(ChildOf)
Definition: flecs.h:557
#define EcsIsEntity
Term id is an entity.
Definition: flecs.h:559
#define EcsIsVariable
Term id is a variable.
Definition: flecs.h:558
#define EcsCascade
Sort results breadth first.
Definition: flecs.h:556
#define EcsDown
Match by traversing downwards (derived, cannot be set)
Definition: flecs.h:554
#define EcsFilter
Prevent observer from triggering on term.
Definition: flecs.h:561
#define EcsUp
Match by traversing upwards.
Definition: flecs.h:553
#define EcsSelf
Match on self.
Definition: flecs.h:552
@ EcsOut
Term is only written.
Definition: flecs.h:537
@ EcsInOut
Term is both read and written.
Definition: flecs.h:535
@ EcsInOutDefault
InOut for regular terms, In for shared terms.
Definition: flecs.h:533
@ EcsInOutNone
Term is neither read nor written.
Definition: flecs.h:534
@ EcsIn
Term is only read.
Definition: flecs.h:536
@ EcsNot
The term must not match.
Definition: flecs.h:544
@ EcsOptional
The term may match.
Definition: flecs.h:545
@ EcsOr
One of the terms in an or chain must match.
Definition: flecs.h:543
@ EcsOrFrom
Term must match at least one component from term id.
Definition: flecs.h:547
@ EcsAnd
The term must match.
Definition: flecs.h:542
@ EcsNotFrom
Term must match none of the components from term id.
Definition: flecs.h:548
@ EcsAndFrom
Term must match all components from term id.
Definition: flecs.h:546
Component information.
Definition: flecs.h:1086
A (string) identifier.
Definition: flecs.h:1077
Component for storing a poly object.
Definition: flecs.h:1092
Target data for flattened relationships.
Definition: flecs.h:1097
Filters alllow for ad-hoc quick filtering of entity tables.
Definition: flecs.h:624
Type that contains information about a query group.
Definition: flecs.h:1062
Type that contains component lifecycle callbacks.
Definition: flecs.h:689
Type that contains component information (passed to ctors/dtors/...)
Definition: flecs.h:738
An array with (component) ids.
Definition: flecs.h:280
Type that contains information about the world.
Definition: flecs.h:998