diff options
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; } |
