bubel-ecs/source/ecs/entity.d
Mergul 8fdb56e840 -fixed crash on getComponent when component doesn't exist
-fixed Components ids sorting
-added deferred object removing
-new EntityManager functions: begin(), end().
2018-09-16 14:16:18 +02:00

38 lines
750 B
D

module ecs.entity;
import ecs.manager;
struct EntityID
{
uint id;
uint counter;
}
struct Entity
{
EntityID id;
void updateID()
{
EntityManager.instance.id_manager.update(this);
}
T* getComponent(T)()
{
EntityManager.EntitiesBlock* block = gEM.getMetaData(&this);
EntityManager.EntityInfo* info = block.type_data;
if(T.component_id >= info.deltas.length || info.deltas[T.component_id] == 0)return null;
return cast(T*)(cast(void*)&this + info.deltas[T.component_id]);
}
}
struct EntityTemplate
{
ubyte[] entity_data;
EntityManager.EntityInfo* info;
T* getComponent(T)()
{
return cast(T*)(entity_data.ptr + info.deltas[T.component_id]);
}
}