From 5891af6843661a9d30c12c3ef0f9efeb534aee88 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 31 Oct 2023 16:28:12 -0400 Subject: rebuild instance buffers as they become oversized --- src/ecs.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'src/ecs.cpp') 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 EntitiesToBeRemoved{16}; // public DynArray entitiesYetToBeRemoved{0, nullptr}; DynArray entitiesMarkedForRemoval{16}; + +DynArray EntitiesWithExcessInstances{16}; + BucketContainer Entities_BucketContainer{}; BucketContainer Comp_GrBinds_BucketContainer{}; BucketContainer 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(); -- cgit v1.2.3