summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
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];