summaryrefslogtreecommitdiff
path: root/src/ecs.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-09-05 13:02:06 -0400
committerJonathan Bradley <jcb@pikum.xyz>2023-09-06 17:24:27 -0400
commit209ea9292599b294fe782ba43a4f3418849a65a3 (patch)
tree154c02fe8e1a813987d47692a75716808b011021 /src/ecs.cpp
parent3c55528b3e0e6e52e416535d9884254a0f21d07e (diff)
type-safe handle max value cleanup
Diffstat (limited to 'src/ecs.cpp')
-rw-r--r--src/ecs.cpp16
1 files changed, 8 insertions, 8 deletions
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);