summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/components.hpp20
-rw-r--r--src/ecs.cpp16
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);