From f947590b909b287c0a724def6ef03937f85c361b Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Tue, 9 Jan 2024 13:37:25 -0500 Subject: refactor and simplify bucketed-array --- src/camera.cpp | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) (limited to 'src/camera.cpp') diff --git a/src/camera.cpp b/src/camera.cpp index 4e8af3d..c7a861c 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -1,4 +1,5 @@ +#include "bucketed-array.hpp" #include "camera.hpp" #include "memory.hpp" @@ -14,31 +15,23 @@ PkeCamera NullCamera { PkeCamera *ActiveCamera = &NullCamera; const PkeHandleItemIndex_T 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 cameraHandle{Buckets_NewHandle(MAX_CAMERAS_PER_BUCKET, Camera_BucketContainer, moved)}; - if (moved && activeHandle != CameraHandle_MAX) { - ActiveCamera = PkeCamera_Get(activeHandle); - } - auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex].cameras[cameraHandle.itemIndex]; + CameraHandle cameraHandle{Buckets_NewHandle(Camera_BucketContainer)}; + auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; cam.handle = cameraHandle; return cam; } PkeCamera *PkeCamera_Get(CameraHandle cameraHandle) { assert(cameraHandle != CameraHandle_MAX); - return &Camera_BucketContainer.buckets[cameraHandle.bucketIndex].cameras[cameraHandle.itemIndex]; + return &Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; } void PkeCamera_Destroy(CameraHandle cameraHandle) { assert(cameraHandle != CameraHandle_MAX); - auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex].cameras[cameraHandle.itemIndex]; + auto &cam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; cam.handle = CameraHandle_MAX; cam.pos = glm::vec3(0); cam.rot = glm::quat{}; @@ -58,11 +51,11 @@ PkeCamera *PkeCamera_GetCameras(int64_t bucketIndex, int64_t &count) { } else { count = MAX_CAMERAS_PER_BUCKET; } - return Camera_BucketContainer.buckets[bucketIndex].cameras; + return Camera_BucketContainer.buckets[bucketIndex]; } void PkeCamera_Init() { - Buckets_Init(Camera_BucketContainer); + Buckets_Init(Camera_BucketContainer, MAX_CAMERAS_PER_BUCKET); } void PkeCamera_Teardown() { -- cgit v1.2.3