From ba250cc496b2e617823ff8111ef463b6adea27f4 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Mon, 11 Dec 2023 14:46:50 -0500 Subject: replace handles with union struct --- src/camera.cpp | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) (limited to 'src/camera.cpp') diff --git a/src/camera.cpp b/src/camera.cpp index f5e1cfc..07c00b8 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -2,8 +2,6 @@ #include "camera.hpp" #include "memory.hpp" -TypeSafeInt_B(CameraHandle); - PkeCamera NullCamera { .handle = CameraHandle_MAX, .pos = glm::vec3(3.f, 3.f, 3.f), @@ -19,34 +17,28 @@ const long MAX_CAMERAS_PER_BUCKET = 32; struct CameraBucket { PkeCamera cameras[MAX_CAMERAS_PER_BUCKET]; }; -BucketContainer Camera_BucketContainer{}; +BucketContainer Camera_BucketContainer{}; PkeCamera &PkeCamera_Register() { bool moved = false; CameraHandle activeHandle = ActiveCamera->handle; - CameraHandle_T cameraHandle_T{Buckets_NewHandle(MAX_CAMERAS_PER_BUCKET, Camera_BucketContainer, moved)}; + CameraHandle cameraHandle{Buckets_NewHandle(MAX_CAMERAS_PER_BUCKET, Camera_BucketContainer, moved)}; if (moved) { ActiveCamera = PkeCamera_Get(activeHandle); } - auto b = Buckets_GetBucketIndex(cameraHandle_T); - auto c = Buckets_GetItemIndex(cameraHandle_T); - auto &cam = Camera_BucketContainer.buckets[b].cameras[c]; - cam.handle = CameraHandle{cameraHandle_T}; + auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex].cameras[cameraHandle.itemIndex]; + cam.handle = cameraHandle; return cam; } PkeCamera *PkeCamera_Get(CameraHandle cameraHandle) { - CameraHandle_T cameraHandle_T = static_cast(cameraHandle); - auto b = Buckets_GetBucketIndex(cameraHandle_T); - auto c = Buckets_GetItemIndex(cameraHandle_T); - return &Camera_BucketContainer.buckets[b].cameras[c]; + assert(cameraHandle != CameraHandle_MAX); + return &Camera_BucketContainer.buckets[cameraHandle.bucketIndex].cameras[cameraHandle.itemIndex]; } void PkeCamera_Destroy(CameraHandle cameraHandle) { - CameraHandle_T cameraHandle_T = static_cast(cameraHandle); - auto b = Buckets_GetBucketIndex(cameraHandle_T); - auto c = Buckets_GetItemIndex(cameraHandle_T); - auto &cam = Camera_BucketContainer.buckets[b].cameras[c]; + assert(cameraHandle != CameraHandle_MAX); + auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex].cameras[cameraHandle.itemIndex]; cam.handle = CameraHandle_MAX; cam.pos = glm::vec3(0); cam.rot = glm::quat{}; @@ -57,12 +49,12 @@ void PkeCamera_Destroy(CameraHandle cameraHandle) { } int64_t PkeCamera_GetBucketCount() { - return Camera_BucketContainer.bucketCounter + 1; + return Camera_BucketContainer.pkeHandle.bucketIndex + 1; } PkeCamera *PkeCamera_GetCameras(int64_t bucketIndex, int64_t &count) { - if (Camera_BucketContainer.bucketCounter == bucketIndex) { - count = Camera_BucketContainer.itemCounter >> 32; + if (Camera_BucketContainer.pkeHandle.bucketIndex == bucketIndex) { + count = Camera_BucketContainer.pkeHandle.itemIndex; } else { count = MAX_CAMERAS_PER_BUCKET; } -- cgit v1.2.3