#ifndef PKE_ECS_HPP #define PKE_ECS_HPP #include "dynamic-array.hpp" #include "macros.hpp" #include "memory.hpp" #include "components.hpp" #include "glm/vec3.hpp" extern DynArray EntitiesToBeRemoved; static struct { uint64_t Entity = 1ULL << 0; uint64_t GrBinds = 1ULL << 1; } ComponentTypes; void ECS_Init(); void ECS_Tick(double delta); EntityHandle ECS_CreateEntity(EntityHandle parentEntHandle = EntityHandle{EntityHandle_T{0xFFFFFFFFFFFFFFFF}}); void ECS_MarkForRemoval(EntityHandle entHandle); uint64_t ECS_GetEntities_BucketCount(); Entity *ECS_GetEntities(uint64_t bucketIndex, uint64_t &itemCount); CompGrBinds &ECS_CreateGrBinds(EntityHandle entHandle); CompGrBinds *ECS_GetGrBinds(EntityHandle entHandle); uint64_t ECS_GetGrBinds_BucketCount(); CompGrBinds *ECS_GetGrBinds(uint64_t bucketIndex, uint64_t &itemCount); CompInstance &ECS_CreateInstance(EntityHandle entHandle, EntityHandle entityTypeEntityHandle); CompInstance *ECS_GetInstance(EntityHandle entHandle); #endif /* PKE_ECS_HPP */