summaryrefslogtreecommitdiff
path: root/editor
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 /editor
parent3583af4e1c7979e8d309693d53fbe9184e067a50 (diff)
pke: use new pk_iter_t from pk.h
Diffstat (limited to 'editor')
-rw-r--r--editor/editor.cpp119
1 files changed, 70 insertions, 49 deletions
diff --git a/editor/editor.cpp b/editor/editor.cpp
index 2292066..ab8598c 100644
--- a/editor/editor.cpp
+++ b/editor/editor.cpp
@@ -545,19 +545,23 @@ struct AssetPickerSearchStruct {
AssetType type{PKE_ASSET_TYPE_ALL};
};
void RecordImGui_AssetPicker(AssetPickerSearchStruct &apss) {
+ bool b;
+ pk_bkt_arr *bkt_arr_assets;
+ pk_iter_t<Asset> iter_asset{};
if (shouldRebuildAssetList == true) {
if (assetEntries.next == 0) {
- auto asset_iter_fn = [](void *user_data, void *arr_obj_data) {
- (void)user_data;
+ bkt_arr_assets = AM_GetAssets();
+ b = pk_bkt_arr_iter_begin(bkt_arr_assets, &iter_asset);
+ while (b == true) {
assetLabel tmp{};
- const Asset &a = *reinterpret_cast<Asset*>(arr_obj_data);
+ const Asset &a = *iter_asset;
tmp.key[AssetKeyLength-1] = '\0';
tmp.handle = a.handle;
tmp.type = a.type;
strncpy(tmp.key, a.key, AssetKeyLength);
pk_arr_append_t(&assetEntries, tmp);
- };
- pk_bkt_arr_iterate(AM_GetAssets(), asset_iter_fn, NULL);
+ b = pk_bkt_arr_iter_increment(bkt_arr_assets, &iter_asset);
+ }
}
std::qsort(assetEntries.data, assetEntries.next, sizeof(assetLabel), assetLabelCmp);
}
@@ -741,6 +745,9 @@ void RecordImGuiEditorWrapper() {
}
void RecordImGuiEntityTypes() {
+ bool b;
+ pk_bkt_arr *bkt_arr_ent_types;
+ pk_iter_t<EntityType> iter_ent_type{};
if (!ImGui::Begin("EntityTypes")) {
ImGui::End();
return;
@@ -759,9 +766,10 @@ void RecordImGuiEntityTypes() {
ImGui::TableHeadersRow();
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);
+ bkt_arr_ent_types = EntityType_GetEntityTypes();
+ b = pk_bkt_arr_iter_begin(bkt_arr_ent_types, &iter_ent_type);
+ while (b == true) {
+ const EntityType &et = *iter_ent_type;
ImGui::PushID(counter++);
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
@@ -779,8 +787,8 @@ void RecordImGuiEntityTypes() {
ImGui::SameLine();
ImGui::Text("count: %u", et.details[0].grBinds->instanceCounter);
ImGui::PopID();
- };
- pk_bkt_arr_iterate(EntityType_GetEntityTypes(), et_iter_cb, &counter);
+ b = pk_bkt_arr_iter_increment(bkt_arr_ent_types, &iter_ent_type);
+ }
ImGui::EndTable();
}
ImGui::End();
@@ -983,7 +991,10 @@ void GenerateMTSDFGlyph(MSDFGlyphSettings *settings, const char *name) {
}
bool RecordImGui_GenerateMTSDFModal() {
+ bool b;
bool ret_value = false;
+ pk_bkt_arr *bkt_arr_assets;
+ pk_iter_t<Asset> iter_asset{};
static struct FontTypeMSDFSettings msdf_settings{};
if (ImGui::BeginPopupModal("MTSDFModal", nullptr, ImGuiWindowFlags_AlwaysAutoResize)) {
@@ -992,18 +1003,20 @@ bool RecordImGui_GenerateMTSDFModal() {
ImGui::Text("Select font:");
ImGui::BeginDisabled(msdf_settings.minimum_scale <= 0.0 || msdf_settings.px_range <= 0.0);
- auto asset_iter_fn = [](void *user_data, void *arr_obj_data) {
- (void)user_data;
- const Asset &a = *reinterpret_cast<Asset*>(arr_obj_data);
+ bkt_arr_assets = AM_GetAssets();
+ b = pk_bkt_arr_iter_begin(bkt_arr_assets, &iter_asset);
+ while(b == true) {
+ const Asset &a = *iter_asset;
if (!PK_HAS_FLAG(a.type, PKE_ASSET_TYPE_FONT)) {
- return;
+ b = pk_bkt_arr_iter_increment(bkt_arr_assets, &iter_asset);
+ continue;
}
if (ImGui::Selectable(a.basePath)) {
GenerateMTSDF(&msdf_settings, &a);
ImGui::CloseCurrentPopup();
}
- };
- pk_bkt_arr_iterate(AM_GetAssets(), asset_iter_fn, NULL);
+ b = pk_bkt_arr_iter_increment(bkt_arr_assets, &iter_asset);
+ }
ImGui::EndDisabled();
ImGui::Separator();
if (ImGui::Button("Cancel")) {
@@ -1063,6 +1076,9 @@ bool RecordImGui_GenerateMTSDFGlyphModal() {
}
void RecordImGuiAssets() {
+ bool b;
+ pk_bkt_arr *bkt_arr_asset;
+ pk_iter_t<Asset> iter_asset;
if (!ImGui::Begin("AssetList")) {
ImGui::End();
return;
@@ -1083,9 +1099,10 @@ void RecordImGuiAssets() {
ImGui::TableHeadersRow();
size_t counter = 0;
- auto asset_iter_fn = [](void *user_data, void *arr_obj_data) {
- size_t &counter = *reinterpret_cast<size_t*>(user_data);
- const Asset &asset = *reinterpret_cast<Asset*>(arr_obj_data);
+ bkt_arr_asset = AM_GetAssets();
+ b = pk_bkt_arr_iter_begin(bkt_arr_asset, &iter_asset);
+ while(b == true) {
+ const Asset &asset = *iter_asset;
ImGui::PushID(counter++);
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
@@ -1103,16 +1120,17 @@ void RecordImGuiAssets() {
ImGui::TableSetColumnIndex(6);
ImGui::Text("%hhi", asset.referenceCount);
ImGui::PopID();
- };
- pk_bkt_arr_iterate(AM_GetAssets(), asset_iter_fn, &counter);
+ b = pk_bkt_arr_iter_increment(bkt_arr_asset, &iter_asset);
+ }
ImGui::EndTable();
}
ImGui::End();
}
void RecordImGuiCameras() {
- using CamIterFn = pk_tmpln_1<void, PkeCamera*, void*>;
- static CamIterFn cam_iter_cb{};
+ bool b;
+ pk_bkt_arr *bkt_arr_cams;
+ pk_iter_t<PkeCamera> iter_cam{};
CompInstance *active_inst = nullptr;
if (!ImGui::Begin("Cameras")) {
ImGui::End();
@@ -1154,13 +1172,10 @@ void RecordImGuiCameras() {
ImGui::TableHeadersRow();
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;
- }
- */
+ bkt_arr_cams = &PkeCamera_GetPkBktArr();
+ b = pk_bkt_arr_iter_begin(bkt_arr_cams, &iter_cam);
+ while (b == true) {
+ const auto &cam = *iter_cam;
ImGui::PushID(cam_counter);
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
@@ -1207,8 +1222,8 @@ void RecordImGuiCameras() {
}
ImGui::PopID();
cam_counter += 1;
- };
- pk_bkt_arr_iterate(&PkeCamera_GetPkBktArr(), &CamIterFn::invoke, &cam_iter_cb);
+ b = pk_bkt_arr_iter_increment(bkt_arr_cams, &iter_cam);
+ }
ImGui::EndTable();
}
@@ -1650,6 +1665,9 @@ void RecordImGuiModalCreateEntityType() {
}
void RecordImGuiLevels() {
+ bool b;
+ pk_bkt_arr *bkt_arr_levels;
+ pk_iter_t<pke_level> iter_level{};
if (!ImGui::Begin("Levels")) {
ImGui::End();
return;
@@ -1663,16 +1681,16 @@ void RecordImGuiLevels() {
ImGui::TableSetupColumn("Handle");
ImGui::TableHeadersRow();
- auto level_iter_cb = [](void *user_data, void *arr_obj_data) {
- (void)user_data;
- pke_level *lvl = reinterpret_cast<pke_level*>(arr_obj_data);
+ bkt_arr_levels = pke_level_get_levels();
+ b = pk_bkt_arr_iter_begin(bkt_arr_levels, &iter_level);
+ while (b == true) {
ImGui::TableNextRow();
ImGui::TableSetColumnIndex(0);
- ImGui::Text("%s", lvl->name);
+ ImGui::Text("%s", iter_level->name);
ImGui::TableSetColumnIndex(1);
- ImGui::Text("0x%08X 0x%08X", lvl->levelHandle.b, lvl->levelHandle.i);
- };
- pk_bkt_arr_iterate(pke_level_get_levels(), level_iter_cb, NULL);
+ ImGui::Text("0x%08X 0x%08X", iter_level->levelHandle.b, iter_level->levelHandle.i);
+ b = pk_bkt_arr_iter_increment(bkt_arr_levels, &iter_level);
+ }
ImGui::EndTable();
}
@@ -1947,6 +1965,10 @@ void RecordImGuiProjectBrowser() {
}
void RecordImGuiSceneBrowser() {
+ bool b;
+ EntityType *entType = NULL;
+ pk_bkt_arr *bkt_arr_instances;
+ pk_iter_t<CompInstance> iter_inst{};
NULL_CHAR_ARR(text, 128);
if (!ImGui::Begin("SceneBrowser", &pkeSettings.editorSettings.isShowingSceneEditor)) {
@@ -1954,24 +1976,23 @@ void RecordImGuiSceneBrowser() {
return;
}
- using InstIterFn = pk_tmpln_1<void, CompInstance*, void*>;
- InstIterFn inst_iter_cb{};
- inst_iter_cb.func = [&text](CompInstance *arr_obj_data) {
- // EntityType *entType = EntityType_FindByEntityHandle(arr_obj_data->entHandle);
- EntityType *entType = NULL;
- CompGrBinds *grBinds = ECS_GetGrBinds(arr_obj_data->grBindsHandle);
+ bkt_arr_instances = ECS_GetInstances();
+ b = pk_bkt_arr_iter_begin(bkt_arr_instances, &iter_inst);
+ while(b == true) {
+ entType = NULL;
+ CompGrBinds *grBinds = ECS_GetGrBinds(iter_inst->grBindsHandle);
if (grBinds != NULL) {
entType = static_cast<EntityType*>(ECS_GetEntity(grBinds->entHandle));
}
- sprintf(text, "%08x %08x", arr_obj_data->instanceHandle.b, arr_obj_data->instanceHandle.i);
+ sprintf(text, "%08x %08x", iter_inst->instanceHandle.b, iter_inst->instanceHandle.i);
if (ImGui::Button(text)) {
- selectedEntity = arr_obj_data;
+ selectedEntity = iter_inst;
}
ImGui::SameLine();
sprintf(text, "EntityType: %s", entType != nullptr ? entType->entityTypeCode.val : "(no type)");
ImGui::Text("%s", text);
- };
- pk_bkt_arr_iterate(ECS_GetInstances(), &InstIterFn::invoke, &inst_iter_cb);
+ b = pk_bkt_arr_iter_increment(bkt_arr_instances, &iter_inst);
+ }
ImGui::End();
}