diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-09 13:37:25 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2024-01-09 13:37:25 -0500 |
| commit | f947590b909b287c0a724def6ef03937f85c361b (patch) | |
| tree | 7b31fd1c337fdceabb4d4744e1eab0101565a869 /src/camera.cpp | |
| parent | 4676e22a8188de5924f6bcf4eec05fb4257de9cb (diff) | |
refactor and simplify bucketed-array
Diffstat (limited to 'src/camera.cpp')
| -rw-r--r-- | src/camera.cpp | 23 |
1 files changed, 8 insertions, 15 deletions
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<CameraBucket, CameraHandle> Camera_BucketContainer{}; +BucketContainer<PkeCamera, CameraHandle> Camera_BucketContainer{}; PkeCamera &PkeCamera_Register() { - bool moved = false; - CameraHandle activeHandle = ActiveCamera->handle; - CameraHandle cameraHandle{Buckets_NewHandle<CameraBucket>(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() { |
