// D import file generated from 'source\ecs\entity.d' module ecs.entity; import ecs.manager; struct EntityID { uint id; uint counter; } struct Entity { EntityID id; void updateID(); 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]); } }