-added export attributes (required by windows to make DLL library, not work at now due to DMD bugs) -interface D files to import
38 lines
757 B
D
38 lines
757 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]);
|
|
}
|
|
}
|
|
|
|
export struct EntityTemplate
|
|
{
|
|
ubyte[] entity_data;
|
|
EntityManager.EntityInfo* info;
|
|
|
|
T* getComponent(T)()
|
|
{
|
|
return cast(T*)(entity_data.ptr + info.deltas[T.component_id]);
|
|
}
|
|
}
|