diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-09-28 11:11:24 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-09-28 11:11:24 -0400 |
| commit | 78621bab9fd6401e4e83493360a46f12bddf4299 (patch) | |
| tree | 455f9799867fc0ef0151f4cb812f9cab1e94181e /src/ecs.cpp | |
| parent | 104224b9022794fd9eff77154482630bcf18348c (diff) | |
more than the first entity is now selectable and properly get CompInstance from ECS
Diffstat (limited to 'src/ecs.cpp')
| -rw-r--r-- | src/ecs.cpp | 29 |
1 files changed, 17 insertions, 12 deletions
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<GrBindsHandle_T>(ent->grBindsHandle)}; - InstanceHandle_T instanceHandle_t{static_cast<InstanceHandle_T>(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<InstanceHandle_T>(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<GrBindsHandle_T>(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; } |
