Entities list.
typedef struct Entities { uint sig; void *wobj; } Entities;

Entity.
typedef struct Entity { int n, v, sig; void *ents; } Entity;

Check if entity is valid.
API bool EntityIsValid(Entity entity);
entity: Entity.
returns: True if entity is valid.

Get caller defined type.
API uint EntityGetType(Entity entity);
entity: Entity.
returns: Caller-defined type.

Get entities container this entity belongs too.
API Entities EntityGetEntities(Entity entity);
entity: Entity.
returns: Entities.

Get super entity.
API Entity EntityGetSupEnt(Entity entity);
entity: Entity.
returns: Super entity.

Get subentity count.
API uint EntityGetSubEntCount(Entity entity);
entity: Entity.
returns: Subentity count.

Get subentity.
API Entity EntityGetSubEnt(Entity entity, uint n);
entity: Entity.
n: Subentity index.
returns: Subentity.

Get entity from entity data.
API Entity EntityGet(void *data);
entity: Entity data.
returns: Entity.

Delete all subentities.
API void EntityClearSubEnts(Entity entity);
entity: Entity.

Get caller-defined data from entity.
API void *EntityGetData(Entity entity);
entity: Entity.
returns: Caller defined data.

Forward update entity and its subentities.
API void EntityForward(Entity entity);
entity: Entity.

Reverse update entity and its subentities.
API void EntityReverse(Entity entity);
entity: Entity.

Set callbacks.
API void EntitySetCallbacks(Entity entity, FUpdateCB Forward, FUpdateCB Reverse);
entity: Entity.
Forward: Forward callback.
Reverse: Reverse callback.

Create new entity.
API Entity EntityCreate(Entities entities, Entity *supEnt, uint type, uint dataSize,
entities: Entities.
supEnt: Super entity or 0.
type: Caller defined type or 0.
dataSize: Size of caller defined data.
Forward: Forward callback.
Reverse: Reverse callback.
Destruct: Destruct callback.
returns: New entity.

Queue entity for destroy.
API void EntityQueueDestroy(Entity *entity);
entity: Entity.

Destroy entity.
API void EntityDestroy(Entity *entity);
entity: Entity.