summaryrefslogtreecommitdiff
path: root/src/camera.cpp
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-08-28 14:04:12 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-08-28 14:04:12 -0400
commitf7bd0793424ed8e024520a941cc4cfcf4eb84de2 (patch)
tree37519eced8f4f66973d88b822513c7841d29a9fe /src/camera.cpp
parent3583af4e1c7979e8d309693d53fbe9184e067a50 (diff)
pke: use new pk_iter_t from pk.h
Diffstat (limited to 'src/camera.cpp')
-rw-r--r--src/camera.cpp39
1 files changed, 19 insertions, 20 deletions
diff --git a/src/camera.cpp b/src/camera.cpp
index 134e9f7..8635211 100644
--- a/src/camera.cpp
+++ b/src/camera.cpp
@@ -142,18 +142,20 @@ void PkeCamera_UntargetInstance(CameraHandle cameraHandle) {
}
void PkeCamera_SetPrimary(CameraHandle cameraHandle) {
+ bool b;
+ pk_iter_t<PkeCamera> iter_cam{};
assert(cameraHandle != CameraHandle_MAX);
- auto check_stale = [](void *user_data, void *cam_ptr) {
- CameraHandle handle = *reinterpret_cast<CameraHandle*>(user_data);
- auto &cam = *reinterpret_cast<PkeCamera*>(cam_ptr);
+
+ b = pk_bkt_arr_iter_begin(&cam_mstr.bktc_cameras, &iter_cam);
+ while (b == true) {
// TODO 2025-05-28 JCB
// There was some speculative scene filtering happening here.
// I removed it because it was comparing entity parents and I don't
// think that is accurate.
// Instead, should be a per-viewport or per-world check?
- cam.isPrimary = (cam.camHandle == handle);
- };
- pk_bkt_arr_iterate(&cam_mstr.bktc_cameras, check_stale, &cameraHandle);
+ iter_cam->isPrimary = iter_cam->camHandle == cameraHandle;
+ b = pk_bkt_arr_iter_increment(&cam_mstr.bktc_cameras, &iter_cam);
+ }
}
void PkeCamera_Destroy(CameraHandle cameraHandle) {
@@ -217,25 +219,22 @@ void PkeCamera_Tick(double delta) {
* See the camera serializer for more.
*/
(void)delta;
- auto check_stale = [](void *user_data, void *cam_ptr) {
- (void)user_data;
- auto &cam = *reinterpret_cast<PkeCamera*>(cam_ptr);
- /* 2025-05-28 JCB - if you see me, delete me, i wasn't needed
- if (cam.handle == EntityHandle_MAX || cam.phys.instHandle == InstanceHandle_MAX) {
- return;
- }
- */
- CompInstance *inst = ECS_GetInstance(cam.phys.instHandle);
+ bool b;
+ pk_iter_t<PkeCamera> iter_cam{};
+ b = pk_bkt_arr_iter_begin(&cam_mstr.bktc_cameras, &iter_cam);
+ while (b == true) {
+ CompInstance *inst = ECS_GetInstance(iter_cam->phys.instHandle);
assert(inst != nullptr);
if (inst->isNeedingUpdated == true) {
- cam.stale = cam.stale | PKE_CAMERA_STALE_POSROT;
+ iter_cam->stale = iter_cam->stale | PKE_CAMERA_STALE_POSROT;
inst->isNeedingUpdated = false;
}
- if (cam.phys.target_inst_uuid == pk_uuid_zed) {
- return;
+ if (iter_cam->phys.target_inst_uuid == pk_uuid_zed) {
+ b = pk_bkt_arr_iter_increment(&cam_mstr.bktc_cameras, &iter_cam);
+ continue;
}
- cam.stale = cam.stale | PKE_CAMERA_STALE_POSROT;
+ iter_cam->stale = iter_cam->stale | PKE_CAMERA_STALE_POSROT;
+ b = pk_bkt_arr_iter_increment(&cam_mstr.bktc_cameras, &iter_cam);
};
- pk_bkt_arr_iterate(&cam_mstr.bktc_cameras, check_stale, NULL);
}