summaryrefslogtreecommitdiff
path: root/editor
diff options
context:
space:
mode:
authorJonathan Bradley <jcb@pikum.xyz>2025-05-30 17:21:38 -0400
committerJonathan Bradley <jcb@pikum.xyz>2025-05-30 17:21:38 -0400
commit2a2b5c4dbfe278e282b3d8ae0352a11da50c872a (patch)
treead0f61c521d2fe0f79a55a72e36af39161b25067 /editor
parentf1d22f3fde0cb7bf201168a11774793b4efc98f7 (diff)
pke: entities: BucketContainer>pk_bkt_arr_t
Diffstat (limited to 'editor')
-rw-r--r--editor/editor.cpp49
1 files changed, 21 insertions, 28 deletions
diff --git a/editor/editor.cpp b/editor/editor.cpp
index 3de8d85..03049bc 100644
--- a/editor/editor.cpp
+++ b/editor/editor.cpp
@@ -733,37 +733,30 @@ void RecordImGuiEntityTypes() {
ImGui::TableSetupColumn("Instances");
ImGui::TableHeadersRow();
- pk_handle_bucket_index_T cameraBucketCount = EntityType_GetBucketCount();
- for (pk_handle_bucket_index_T b = 0; b < cameraBucketCount; ++b) {
- pk_handle_item_index_T count;
- auto *entityTypes = EntityType_GetEntityTypes(b, count);
- ImGui::PushID(b);
- for (pk_handle_item_index_T i = 0; i < count; ++i) {
- const auto &et = entityTypes[i];
- if (et.handle == EntityHandle_MAX)
- continue;
- ImGui::PushID(i);
- ImGui::TableNextRow();
- ImGui::TableSetColumnIndex(0);
- ImGui::Text("0x%08X 0x%08X", et.handle.b, et.handle.i);
- ImGui::TableSetColumnIndex(1);
- ImGui::Text("%*.*s", 0, (int)AssetKeyLength, et.modelAssetKey);
- ImGui::TableSetColumnIndex(2);
- ImGui::Text("%s", et.entityTypeCode.val);
- ImGui::TableSetColumnIndex(3);
- ImGui::Text("count: %li", et.detailsCount);
- ImGui::TableSetColumnIndex(4);
- if (ImGui::Button("Add")) {
- pk_arr_append_t(&entityInstancesToCreate, const_cast<EntityType *>(&et));
- }
- ImGui::SameLine();
- ImGui::Text("count: %u", et.details[0].grBinds->instanceCounter);
- ImGui::PopID();
+ size_t counter = 0;
+ auto et_iter_cb = [](void *user_data, void *arr_obj_data) {
+ size_t &counter = *reinterpret_cast<size_t *>(user_data);
+ const EntityType &et = *reinterpret_cast<EntityType*>(arr_obj_data);
+ ImGui::PushID(counter++);
+ ImGui::TableNextRow();
+ ImGui::TableSetColumnIndex(0);
+ ImGui::Text("0x%08X 0x%08X", et.handle.b, et.handle.i);
+ ImGui::TableSetColumnIndex(1);
+ ImGui::Text("%*.*s", 0, (int)AssetKeyLength, et.modelAssetKey);
+ ImGui::TableSetColumnIndex(2);
+ ImGui::Text("%s", et.entityTypeCode.val);
+ ImGui::TableSetColumnIndex(3);
+ ImGui::Text("count: %li", et.detailsCount);
+ ImGui::TableSetColumnIndex(4);
+ if (ImGui::Button("Add")) {
+ pk_arr_append_t(&entityInstancesToCreate, const_cast<EntityType *>(&et));
}
+ ImGui::SameLine();
+ ImGui::Text("count: %u", et.details[0].grBinds->instanceCounter);
ImGui::PopID();
- }
+ };
+ pk_bkt_arr_iterate(EntityType_GetEntityTypes(), et_iter_cb, &counter);
ImGui::EndTable();
-
}
ImGui::End();
}