summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2024-05-30 21:47:05 -0400
committerJonathan Bradley <jcb@pikum.xyz>2024-05-30 21:47:05 -0400
commit7c73f70312def33a74f1f90d0dbbceb84cd46eae (patch)
tree44c8f015c5083f3937c914907db379b7aec44224 /src/camera.cpp
parent1b48d1382d2d57a822201f34743a51813798b348 (diff)
first-pass update camera
Diffstat (limited to 'src/camera.cpp')
-rw-r--r--src/camera.cpp16
1 files changed, 16 insertions, 0 deletions
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];