summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2023-12-11 14:46:50 -0500
committerJonathan Bradley <jcb@pikum.xyz>2023-12-11 18:56:57 -0500
commitba250cc496b2e617823ff8111ef463b6adea27f4 (patch)
treedc926851da01b970aca827d6c6ca84b87a7432fa /src/camera.cpp
parent8047197b62894cb1f7bb6a6871870e4b91fde992 (diff)
replace handles with union struct
Diffstat (limited to 'src/camera.cpp')
-rw-r--r--src/camera.cpp30
1 files changed, 11 insertions, 19 deletions
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<CameraBucket, CameraHandle_T> Camera_BucketContainer{};
+BucketContainer<CameraBucket, CameraHandle> Camera_BucketContainer{};
PkeCamera &PkeCamera_Register() {
bool moved = false;
CameraHandle activeHandle = ActiveCamera->handle;
- CameraHandle_T cameraHandle_T{Buckets_NewHandle<CameraBucket>(MAX_CAMERAS_PER_BUCKET, Camera_BucketContainer, moved)};
+ CameraHandle cameraHandle{Buckets_NewHandle<CameraBucket>(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_T>(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_T>(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;
}