From 78621bab9fd6401e4e83493360a46f12bddf4299 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 28 Sep 2023 11:11:24 -0400 Subject: more than the first entity is now selectable and properly get CompInstance from ECS --- src/ecs.cpp | 29 +++++++++++++++++------------ 1 file changed, 17 insertions(+), 12 deletions(-) (limited to 'src/ecs.cpp') diff --git a/src/ecs.cpp b/src/ecs.cpp index 600eaa4..b0f9250 100644 --- a/src/ecs.cpp +++ b/src/ecs.cpp @@ -271,7 +271,7 @@ CompInstance &ECS_CreateInstance(EntityHandle entHandle, EntityHandle entityType auto *comp = &Comp_Instance_BucketContainer.buckets[b].instances[i]; comp = new (comp) CompInstance{}; comp->entHandle = entHandle; - comp->grBindsHandle = ent->grBindsHandle; + comp->grBindsHandle = grBinds->grBindsHandle; comp->instanceHandle = ent->instanceHandle; comp->index = grBinds->instances.Count(); grBinds->instances.Push({ @@ -286,20 +286,25 @@ CompInstance &ECS_CreateInstance(EntityHandle entHandle, EntityHandle entityType CompInstance *ECS_GetInstance(EntityHandle entHandle) { Entity *ent = nullptr; ECS_GetEntity_Inner(entHandle, ent); - if (ent->grBindsHandle == GrBindsHandle_MAX) return nullptr; - if (ent->instanceHandle == InstanceHandle_MAX) return nullptr; - GrBindsHandle_T grBindsHandle_t{static_cast(ent->grBindsHandle)}; - InstanceHandle_T instanceHandle_t{static_cast(ent->instanceHandle)}; + + if (ent->instanceHandle == InstanceHandle_MAX) + return nullptr; - auto b2 = Buckets_GetBucketIndex(grBindsHandle_t); - auto i2 = Buckets_GetItemIndex(grBindsHandle_t); - auto &grBinds = Comp_GrBinds_BucketContainer.buckets[b2].compGrBinds[i2]; + InstanceHandle_T instanceHandle_t{static_cast(ent->instanceHandle)}; auto b = Buckets_GetBucketIndex(instanceHandle_t); auto i = Buckets_GetItemIndex(instanceHandle_t); - auto &comp = Comp_Instance_BucketContainer.buckets[b].instances[i]; + auto *inst = &Comp_Instance_BucketContainer.buckets[b].instances[i]; - if (comp.index == ECS_UNSET_VAL) + if (inst->index == ECS_UNSET_VAL) + return nullptr; + if (inst->grBindsHandle == GrBindsHandle_MAX) return nullptr; - comp.ptr = &grBinds.instances[comp.index]; - return ∁ + + GrBindsHandle_T grBindsHandle_t{static_cast(inst->grBindsHandle)}; + auto b2 = Buckets_GetBucketIndex(grBindsHandle_t); + auto i2 = Buckets_GetItemIndex(grBindsHandle_t); + auto grBinds = &Comp_GrBinds_BucketContainer.buckets[b2].compGrBinds[i2]; + + inst->ptr = &grBinds->instances[inst->index]; + return inst; } -- cgit v1.2.3