diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-11 14:46:50 -0500 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2023-12-11 18:56:57 -0500 |
| commit | ba250cc496b2e617823ff8111ef463b6adea27f4 (patch) | |
| tree | dc926851da01b970aca827d6c6ca84b87a7432fa /src/camera.cpp | |
| parent | 8047197b62894cb1f7bb6a6871870e4b91fde992 (diff) | |
replace handles with union struct
Diffstat (limited to 'src/camera.cpp')
| -rw-r--r-- | src/camera.cpp | 30 |
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; } |
