summaryrefslogtreecommitdiff
path: root/src/ecs.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-01-04 17:27:54 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-01-04 17:27:54 -0500
commitb0e0814374d934a62e434b65d02d23d3884bce80 (patch)
tree894d98ed1fdb77ffebb16d20fa885272001fe0cb /src/ecs.cpp
parent25648cbd7273c66ab6fc9d5e647ee0268da1f4d8 (diff)
refactor to allow unloading a single EntityType
Diffstat (limited to 'src/ecs.cpp')
-rw-r--r--src/ecs.cpp9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/ecs.cpp b/src/ecs.cpp
index c33caaa..34eb701 100644
--- a/src/ecs.cpp
+++ b/src/ecs.cpp
@@ -127,7 +127,9 @@ void ECS_Tick_Early(double delta) {
instBucketIndex = clonedEnt.instanceHandle.bucketIndex;
instBucket = &Comp_Instance_BucketContainer.buckets[instBucketIndex];
inst = &instBucket->instances[clonedEnt.instanceHandle.itemIndex];
- grBinds = &Comp_GrBinds_BucketContainer.buckets[inst->grBindsHandle.bucketIndex].compGrBinds[inst->grBindsHandle.itemIndex];
+ if (inst->grBindsHandle != GrBindsHandle_MAX) {
+ grBinds = &Comp_GrBinds_BucketContainer.buckets[inst->grBindsHandle.bucketIndex].compGrBinds[inst->grBindsHandle.itemIndex];
+ }
}
if (grBinds == nullptr && clonedEnt.grBindsHandle != GrBindsHandle_MAX) {
grBinds = &Comp_GrBinds_BucketContainer.buckets[clonedEnt.grBindsHandle.bucketIndex].compGrBinds[clonedEnt.grBindsHandle.itemIndex];
@@ -168,6 +170,11 @@ void ECS_Tick_Early(double delta) {
inst->bt.rigidBody = CAFE_BABE(btRigidBody);
inst->bt.motionState = CAFE_BABE(btDefaultMotionState);
} else if (grBinds != nullptr) {
+ grBinds->entHandle = EntityHandle_MAX;
+ grBinds->grBindsHandle = GrBindsHandle_MAX;
+ grBinds->vkPipelineLayout = VK_NULL_HANDLE;
+ grBinds->graphicsPipeline = VK_NULL_HANDLE;
+ grBinds->collisionCallback = PkeCallback{};
/*
* 2023-09-05 JB note - the Vulkan assets (device memory, buffers,
* pipeline layout, and descriptor set) are unloaded elsewhere, just,