#ifndef PKE_ECS_HPP #define PKE_ECS_HPP #include "dynamic-array.hpp" #include "pk.h" #include "components.hpp" extern DynArray EntitiesToBeRemoved; extern DynArray EntitiesWithExcessInstances; void ECS_Init(); void ECS_Teardown(); void ECS_Tick_Early(double delta); void ECS_Tick(double delta); void ECS_Tick_Late(double delta); Entity_Base *ECS_CreateGenericEntity(); EntityHandle ECS_CreateEntity(Entity_Base *entity, Entity_Base *parentEnt = nullptr); Entity_Base *ECS_GetEntity(EntityHandle handle); void ECS_MarkForRemoval(Entity_Base *entity); void ECS_HandleCollision(CompInstance *lhs, CompInstance *rhs); CompGrBinds *ECS_CreateGrBinds(Entity_Base *); CompGrBinds *ECS_GetGrBinds(GrBindsHandle grBindsHandle); void ECS_GetGrBinds(Entity_Base *entity, pk_arr_t &arr); uint64_t ECS_GetGrBinds_BucketCount(); CompGrBinds *ECS_GetGrBinds(pk_handle_bucket_index_T bucketIndex, pk_handle_item_index_T &itemCount); CompInstance *ECS_CreateInstance(Entity_Base *entity, pk_uuid uuid, CompGrBinds *entityTypeGrBinds); CompInstance *ECS_GetInstance(InstanceHandle instanceHandle); void ECS_GetInstances(Entity_Base *entity, pk_arr_t &arr); void ECS_UpdateInstance(CompInstance *instance, const InstPos &instPos, bool overridePhysics = false); uint64_t ECS_GetInstances_BucketCount(); CompInstance *ECS_GetInstances(pk_handle_bucket_index_T bucketIndex, pk_handle_item_index_T &itemCount); #endif /* PKE_ECS_HPP */