diff options
| author | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-28 17:40:45 -0400 |
|---|---|---|
| committer | Jonathan Bradley <jcb@pikum.xyz> | 2025-05-28 17:40:45 -0400 |
| commit | dfd1776e1af9b8da86005a294e4b086fbe6e7f4e (patch) | |
| tree | 7271607e2a56343200df38341043584771350d1a /editor | |
| parent | 3a81898eed7eed7b220d280a8acc9c9cdceac7c0 (diff) | |
pke: camera: replace BucketContainer -> pk_bkt_arr
Diffstat (limited to 'editor')
| -rw-r--r-- | editor/editor.cpp | 111 |
1 files changed, 55 insertions, 56 deletions
diff --git a/editor/editor.cpp b/editor/editor.cpp index 9e2f938..38e2828 100644 --- a/editor/editor.cpp +++ b/editor/editor.cpp @@ -1105,6 +1105,8 @@ void RecordImGuiAssets() { } void RecordImGuiCameras() { + using CamIterFn = pk_tmpln_1<void, PkeCamera*, void*>; + static CamIterFn cam_iter_cb{}; CompInstance *active_inst = nullptr; if (!ImGui::Begin("Cameras")) { ImGui::End(); @@ -1145,63 +1147,62 @@ void RecordImGuiCameras() { ImGui::TableSetupColumn("Controls"); ImGui::TableHeadersRow(); - pk_handle_bucket_index_T cameraBucketCount = PkeCamera_GetBucketCount(); - for (pk_handle_bucket_index_T b = 0; b < cameraBucketCount; ++b) { - pk_handle_item_index_T count; - auto *cameras = PkeCamera_GetCameras(b, count); - ImGui::PushID(b); - for (pk_handle_item_index_T i = 0; i < count; ++i) { - const auto &cam = cameras[i]; - if (cam.handle == CameraHandle_MAX) - continue; - ImGui::PushID(i); - ImGui::TableNextRow(); - ImGui::TableSetColumnIndex(0); - ImGui::BeginDisabled(selectedCamera == cam.handle); - if (ImGui::Button("Show")) { - selectedCamera = cam.camHandle; - ActiveCamera = const_cast<PkeCamera *>(&cam); - ActiveCamera->stale = PKE_CAMERA_STALE_ALL; - } - ImGui::SameLine(); - if (ImGui::Button("Select")) { - selectedEntity = ECS_GetInstance(cam.phys.instHandle); - } - ImGui::EndDisabled(); - ImGui::TableSetColumnIndex(1); - ImGui::Text("0x%08X 0x%08X", cam.handle.bucketIndex, cam.handle.itemIndex); - ImGui::TableSetColumnIndex(2); - ImGui::Text(pk_uuid_printf_format, pk_uuid_printf_var(cam.phys.target_inst_uuid)); - ImGui::TableSetColumnIndex(3); - ImGui::Text("%hhu", (unsigned char)cam.type); - ImGui::TableSetColumnIndex(4); - ImGui::Text("%hhu", (unsigned char)cam.view); - ImGui::TableSetColumnIndex(5); - ImGui::Text("%hhu", (unsigned char)cam.stale); - ImGui::TableSetColumnIndex(6); - ImGui::Text("%i", cam.isPrimary); - ImGui::TableSetColumnIndex(7); - if (ImGui::Button("Update Position")) { - InstPos instPos{}; - instPos.mass = 1.f; - if (active_inst == nullptr) { - NullCameraInstance.bt.motionState->getWorldTransform(instPos.posRot); - instPos.scale = NullCameraInstance.bt.rigidBody->getCollisionShape()->getLocalScaling(); - } else { - active_inst->bt.motionState->getWorldTransform(instPos.posRot); - instPos.scale = active_inst->bt.rigidBody->getCollisionShape()->getLocalScaling(); - } - CompInstance *camInst = ECS_GetInstance(cam.phys.instHandle); - ECS_UpdateInstance(camInst, instPos, true); - } - ImGui::SameLine(); - if (ImGui::Button("Make Primary")) { - PkeCamera_SetPrimary(cam.camHandle); + size_t cam_counter = 0; + cam_iter_cb.func = [&cam_counter, &active_inst](PkeCamera *cam_ptr) { + const auto &cam = *cam_ptr; + /* 2025-05-28 JCB delete me if you see me, i wasn't needed + if (cam.camHandle.b == CameraHandle_MAX.b && cam.camHandle.i == CameraHandle_MAX.i) { + return; + } + */ + ImGui::PushID(cam_counter); + ImGui::TableNextRow(); + ImGui::TableSetColumnIndex(0); + ImGui::BeginDisabled(selectedCamera.b == cam.camHandle.b && selectedCamera.i == cam.camHandle.i); + if (ImGui::Button("Show")) { + selectedCamera = cam.camHandle; + ActiveCamera = const_cast<PkeCamera *>(&cam); + ActiveCamera->stale = PKE_CAMERA_STALE_ALL; + } + ImGui::SameLine(); + if (ImGui::Button("Select")) { + selectedEntity = ECS_GetInstance(cam.phys.instHandle); + } + ImGui::EndDisabled(); + ImGui::TableSetColumnIndex(1); + ImGui::Text("0x%08X 0x%08X", cam.handle.bucketIndex, cam.handle.itemIndex); + ImGui::TableSetColumnIndex(2); + ImGui::Text(pk_uuid_printf_format, pk_uuid_printf_var(cam.phys.target_inst_uuid)); + ImGui::TableSetColumnIndex(3); + ImGui::Text("%hhu", (unsigned char)cam.type); + ImGui::TableSetColumnIndex(4); + ImGui::Text("%hhu", (unsigned char)cam.view); + ImGui::TableSetColumnIndex(5); + ImGui::Text("%hhu", (unsigned char)cam.stale); + ImGui::TableSetColumnIndex(6); + ImGui::Text("%i", cam.isPrimary); + ImGui::TableSetColumnIndex(7); + if (ImGui::Button("Update Position")) { + InstPos instPos{}; + instPos.mass = 1.f; + if (active_inst == nullptr) { + NullCameraInstance.bt.motionState->getWorldTransform(instPos.posRot); + instPos.scale = NullCameraInstance.bt.rigidBody->getCollisionShape()->getLocalScaling(); + } else { + active_inst->bt.motionState->getWorldTransform(instPos.posRot); + instPos.scale = active_inst->bt.rigidBody->getCollisionShape()->getLocalScaling(); } - ImGui::PopID(); + CompInstance *camInst = ECS_GetInstance(cam.phys.instHandle); + ECS_UpdateInstance(camInst, instPos, true); + } + ImGui::SameLine(); + if (ImGui::Button("Make Primary")) { + PkeCamera_SetPrimary(cam.camHandle); } ImGui::PopID(); - } + cam_counter += 1; + }; + pk_bkt_arr_iterate(&PkeCamera_GetPkBktArr(), &CamIterFn::invoke, &cam_iter_cb); ImGui::EndTable(); } @@ -1236,8 +1237,6 @@ void RecordImGuiCameras() { cam->view = PKE_CAMERA_VIEW_FREE; } ImGui::EndDisabled(); - - } } |
