diff options
| -rw-r--r-- | src/components.hpp | 20 | ||||
| -rw-r--r-- | src/ecs.cpp | 16 |
2 files changed, 18 insertions, 18 deletions
diff --git a/src/components.hpp b/src/components.hpp index 8f0d3a5..7f3c0bb 100644 --- a/src/components.hpp +++ b/src/components.hpp @@ -10,15 +10,15 @@ const uint64_t ECS_UNSET_VAL = 0xFFFFFFFFFFFFFFFF; -TypeSafeInt_H(EntityHandle, uint64_t, UINT64_MAX); -TypeSafeInt_H(GrBindsHandle, uint64_t, UINT64_MAX); -TypeSafeInt_H(InstanceHandle, uint64_t, UINT64_MAX); +TypeSafeInt_H(EntityHandle, uint64_t, ECS_UNSET_VAL); +TypeSafeInt_H(GrBindsHandle, uint64_t, ECS_UNSET_VAL); +TypeSafeInt_H(InstanceHandle, uint64_t, ECS_UNSET_VAL); struct Entity { - EntityHandle handle = EntityHandle{EntityHandle_T{ECS_UNSET_VAL}}; - EntityHandle parentHandle = EntityHandle{EntityHandle_T{ECS_UNSET_VAL}}; - GrBindsHandle grBindsHandle = GrBindsHandle{GrBindsHandle_T{ECS_UNSET_VAL}}; - InstanceHandle instanceHandle = InstanceHandle{InstanceHandle_T{ECS_UNSET_VAL}}; + EntityHandle handle = EntityHandle_MAX; + EntityHandle parentHandle = EntityHandle_MAX; + GrBindsHandle grBindsHandle = GrBindsHandle_MAX; + InstanceHandle instanceHandle = InstanceHandle_MAX; bool isMarkedForRemoval = false; }; @@ -34,7 +34,7 @@ struct InstPos { }; struct CompGrBinds { - GrBindsHandle grBindsHandle = GrBindsHandle{GrBindsHandle_T{ECS_UNSET_VAL}}; + GrBindsHandle grBindsHandle = GrBindsHandle_MAX; VkDeviceMemory deviceMemory = VK_NULL_HANDLE; VkBuffer vertexBuffer = VK_NULL_HANDLE; uint32_t vertexFirstBinding = 0; @@ -56,8 +56,8 @@ struct CompGrBinds { }; struct CompInstance { - GrBindsHandle grBindsHandle = GrBindsHandle{GrBindsHandle_T{ECS_UNSET_VAL}}; - InstanceHandle instanceHandle = InstanceHandle{InstanceHandle_T{ECS_UNSET_VAL}}; + GrBindsHandle grBindsHandle = GrBindsHandle_MAX; + InstanceHandle instanceHandle = InstanceHandle_MAX; uint64_t index = ECS_UNSET_VAL; InstPos *ptr = nullptr; }; diff --git a/src/ecs.cpp b/src/ecs.cpp index 1af539c..389e53f 100644 --- a/src/ecs.cpp +++ b/src/ecs.cpp @@ -22,7 +22,7 @@ BucketContainer<InstanceBucket, InstanceHandle_T> Comp_Instance_BucketContainer{ void ECS_GetEntity_Inner(EntityHandle entHandle, Entity*& ent) { EntityHandle_T entHandle_t{static_cast<EntityHandle_T>(entHandle)}; - assert(entHandle_t == ECS_UNSET_VAL && "Unknown entity handle"); + assert(entHandle_t != EntityHandle_T_MAX && "Unknown entity handle"); auto b = Buckets_GetBucketIndex(static_cast<EntityHandle_T>(entHandle)); auto e = Buckets_GetItemIndex(static_cast<EntityHandle_T>(entHandle)); ent = &Entities_BucketContainer.buckets[b].entities[e]; @@ -66,10 +66,10 @@ void ECS_Tick(double delta) { uint64_t entCount = b == Entities_BucketContainer.bucketCounter ? Entities_BucketContainer.itemCounter >> 32 : maxBucketItemCount; for (long e = 0; e < entCount; ++e) { Entity *ent = &Entities_BucketContainer.buckets[b].entities[e]; - if (ent->handle == EntityHandle{EntityHandle_T{0xFFFFFFFFFFFFFFFF}}) continue; + if (ent->handle == EntityHandle_MAX) continue; if (ent->isMarkedForRemoval) { - ent->handle = EntityHandle{EntityHandle_T{0xFFFFFFFFFFFFFFFF}}; - ent->parentHandle = EntityHandle{EntityHandle_T{0xFFFFFFFFFFFFFFFF}}; + ent->handle = EntityHandle_MAX; + ent->parentHandle = EntityHandle_MAX; ent->isMarkedForRemoval = false; // TODO destroy components } else { @@ -103,8 +103,8 @@ CompGrBinds &ECS_CreateGrBinds(EntityHandle entHandle) { CompGrBinds *ECS_GetGrBinds(EntityHandle entHandle) { Entity *ent = nullptr; ECS_GetEntity_Inner(entHandle, ent); + if (ent->grBindsHandle == GrBindsHandle_MAX) return nullptr; GrBindsHandle_T grBindsHandle_t{static_cast<GrBindsHandle_T>(ent->grBindsHandle)}; - if (grBindsHandle_t == ECS_UNSET_VAL) return nullptr; auto b = Buckets_GetBucketIndex(grBindsHandle_t); auto i = Buckets_GetItemIndex(grBindsHandle_t); return &Comp_GrBinds_BucketContainer.buckets[b].compGrBinds[i]; @@ -128,8 +128,8 @@ CompInstance &ECS_CreateInstance(EntityHandle entHandle) { ECS_GetEntity_Inner(entHandle, ent); InstanceHandle_T newHandle{Buckets_NewHandle(maxBucketItemCount, Comp_Instance_BucketContainer)}; ent->instanceHandle = InstanceHandle{newHandle}; + assert(ent->grBindsHandle != GrBindsHandle_MAX); GrBindsHandle_T grBindsHandle_t{static_cast<GrBindsHandle_T>(ent->grBindsHandle)}; - assert(grBindsHandle_t != ECS_UNSET_VAL); auto b2 = Buckets_GetBucketIndex(grBindsHandle_t); auto i2 = Buckets_GetItemIndex(grBindsHandle_t); @@ -149,10 +149,10 @@ CompInstance &ECS_CreateInstance(EntityHandle entHandle) { 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)}; - if (grBindsHandle_t == ECS_UNSET_VAL) return nullptr; InstanceHandle_T instanceHandle_t{static_cast<InstanceHandle_T>(ent->instanceHandle)}; - if (instanceHandle_t == ECS_UNSET_VAL) return nullptr; auto b2 = Buckets_GetBucketIndex(grBindsHandle_t); auto i2 = Buckets_GetItemIndex(grBindsHandle_t); |
