summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-05-28 17:40:45 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-05-28 17:40:45 -0400
commitdfd1776e1af9b8da86005a294e4b086fbe6e7f4e (patch)
tree7271607e2a56343200df38341043584771350d1a /editor
parent3a81898eed7eed7b220d280a8acc9c9cdceac7c0 (diff)
pke: camera: replace BucketContainer -> pk_bkt_arr
Diffstat (limited to 'editor')
-rw-r--r--editor/editor.cpp111
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();
-
-
}
}