summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-01-09 13:37:25 -0500
committerJonathan Bradley <jcb@pikum.xyz>2024-01-09 13:37:25 -0500
commitf947590b909b287c0a724def6ef03937f85c361b (patch)
tree7b31fd1c337fdceabb4d4744e1eab0101565a869 /src/camera.cpp
parent4676e22a8188de5924f6bcf4eec05fb4257de9cb (diff)
refactor and simplify bucketed-array
Diffstat (limited to 'src/camera.cpp')
-rw-r--r--src/camera.cpp23
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() {