From 7c73f70312def33a74f1f90d0dbbceb84cd46eae Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 30 May 2024 21:47:05 -0400 Subject: first-pass update camera --- src/camera.cpp | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'src/camera.cpp') diff --git a/src/camera.cpp b/src/camera.cpp index f033824..3982642 100644 --- a/src/camera.cpp +++ b/src/camera.cpp @@ -124,6 +124,22 @@ void PkeCamera_DetachFromInstance(CameraHandle cameraHandle, CompInstance *inst) cam.stale = PKE_CAMERA_STALE_POSROT; } +void PkeCamera_SetPrimary(CameraHandle cameraHandle) { + assert(cameraHandle != CameraHandle_MAX); + auto &primaryCam = Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; + for (PkeHandleBucketIndex_T b = 0; b <= Camera_BucketContainer.pkeHandle.bucketIndex; ++b) { + auto &bkt = Camera_BucketContainer.buckets[b]; + long itemCount = Camera_BucketContainer.pkeHandle.bucketIndex == b ? Camera_BucketContainer.pkeHandle.itemIndex : Camera_BucketContainer.limits.itemIndex; + for (PkeHandleItemIndex_T i = 0; i < itemCount; ++i) { + auto *cam = &bkt[i]; + if (cam->parentHandle != primaryCam.parentHandle) { + continue; + } + cam->isPrimary = cam->camHandle == cameraHandle; + } + } +} + void PkeCamera_Destroy(CameraHandle cameraHandle) { assert(cameraHandle != CameraHandle_MAX); auto *camPtr = &Camera_BucketContainer.buckets[cameraHandle.bucketIndex][cameraHandle.itemIndex]; -- cgit v1.2.3