summaryrefslogtreecommitdiff
path: root/src/ecs.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ecs.cpp')
-rw-r--r--src/ecs.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/ecs.cpp b/src/ecs.cpp
index 03f26db..b4207f8 100644
--- a/src/ecs.cpp
+++ b/src/ecs.cpp
@@ -21,6 +21,9 @@ DynArray<EntityHandle> EntitiesToBeRemoved{16}; // public
DynArray<Entity> entitiesYetToBeRemoved{0, nullptr};
DynArray<EntityHandle> entitiesMarkedForRemoval{16};
+
+DynArray<EntityHandle> EntitiesWithExcessInstances{16};
+
BucketContainer<EntityBucket, EntityHandle_T> Entities_BucketContainer{};
BucketContainer<GrBindsBucket, GrBindsHandle_T> Comp_GrBinds_BucketContainer{};
BucketContainer<InstanceBucket, InstanceHandle_T> Comp_Instance_BucketContainer{};
@@ -344,6 +347,10 @@ CompInstance &ECS_CreateInstance(EntityHandle entHandle, EntityHandle entityType
comp->instPos.rot = glm::quat(1, 0, 0, 0);
comp->instPos.scale = glm::vec3(1, 1, 1);
comp->isNeedingUpdated = true;
+
+ if (grBinds->instanceCounter > grBinds->instanceBufferMaxCount) {
+ EntitiesWithExcessInstances.Push(grBinds->entHandle);
+ }
return *comp;
}
@@ -394,6 +401,7 @@ CompInstance *ECS_GetInstances(uint64_t bucketIndex, uint64_t &itemCount) {
}
void ECS_Teardown() {
+ EntitiesWithExcessInstances.~DynArray();
entitiesYetToBeRemoved.~DynArray();
EntitiesToBeRemoved.~DynArray();
entitiesMarkedForRemoval.~DynArray();