From f7bd0793424ed8e024520a941cc4cfcf4eb84de2 Mon Sep 17 00:00:00 2001 From: Jonathan Bradley Date: Thu, 28 Aug 2025 14:04:12 -0400 Subject: pke: use new pk_iter_t from pk.h --- src/camera.cpp | 39 +++++++++++++++++++-------------------- 1 file changed, 19 insertions(+), 20 deletions(-) (limited to 'src/camera.cpp') 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 iter_cam{}; assert(cameraHandle != CameraHandle_MAX); - auto check_stale = [](void *user_data, void *cam_ptr) { - CameraHandle handle = *reinterpret_cast(user_data); - auto &cam = *reinterpret_cast(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(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 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); } -- cgit v1.2.3