From 0d106bde218d80783056006038f6e54d88af952f Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Tue, 30 Jan 2024 21:45:58 -0600 Subject: [PATCH 1/3] [ox/oc] Fix objects to always write when members of arrays --- deps/ox/src/ox/oc/write.hpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deps/ox/src/ox/oc/write.hpp b/deps/ox/src/ox/oc/write.hpp index a6a11038..b6e22239 100644 --- a/deps/ox/src/ox/oc/write.hpp +++ b/deps/ox/src/ox/oc/write.hpp @@ -27,7 +27,7 @@ class OrganicClawWriter { friend Result writeOC(const auto &val) noexcept; protected: - Json::Value m_json; + Json::Value m_json{Json::Value(Json::objectValue)}; Json::ArrayIndex m_fieldIt = 0; int m_unionIdx = -1; @@ -215,7 +215,7 @@ Error OrganicClawWriter::field(const char *key, const T *val) noexcept { OrganicClawWriter w; ModelHandlerInterface handler{&w}; oxReturnError(model(&handler, val)); - if (!w.m_json.isNull()) { + if (!w.m_json.empty() || m_json.isArray()) { value(key) = w.m_json; } } From ef9cb8bea4bbe5ea58b813d19f285a14d00714f3 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Tue, 30 Jan 2024 21:46:38 -0600 Subject: [PATCH 2/3] [olympic/modlib] Add ListBox to ImGui util --- .../studio/modlib/include/studio/imguiutil.hpp | 8 ++++++++ src/olympic/studio/modlib/src/imguiutil.cpp | 18 ++++++++++++++---- 2 files changed, 22 insertions(+), 4 deletions(-) diff --git a/src/olympic/studio/modlib/include/studio/imguiutil.hpp b/src/olympic/studio/modlib/include/studio/imguiutil.hpp index a77c4e3b..312ea0f4 100644 --- a/src/olympic/studio/modlib/include/studio/imguiutil.hpp +++ b/src/olympic/studio/modlib/include/studio/imguiutil.hpp @@ -4,6 +4,8 @@ #pragma once +#include + #include #include @@ -59,6 +61,12 @@ bool FileComboBox( ox::StringView fileExt, size_t &selectedIdx) noexcept; +bool ListBox( + ox::CStringView name, + std::function const&f, + size_t strCnt, + size_t &selIdx) noexcept; + /** * * @param name diff --git a/src/olympic/studio/modlib/src/imguiutil.cpp b/src/olympic/studio/modlib/src/imguiutil.cpp index fbccc985..5b1765c4 100644 --- a/src/olympic/studio/modlib/src/imguiutil.cpp +++ b/src/olympic/studio/modlib/src/imguiutil.cpp @@ -113,24 +113,34 @@ bool FileComboBox( return out; } -bool ListBox(ox::CStringView name, ox::SpanView const&list, size_t &selIdx) noexcept { +bool ListBox( + ox::CStringView name, + std::function const&f, + size_t strCnt, + size_t &selIdx) noexcept { auto out = false; if (ImGui::BeginListBox(name.c_str())) { - for (auto i = 0u; auto const&obj : list) { + for (auto i = 0u; i < strCnt; ++i) { + auto str = f(i); ig::IDStackItem const idStackItem2(static_cast(i)); - if (ImGui::Selectable(obj.c_str(), selIdx == i)) { + if (ImGui::Selectable(str.c_str(), selIdx == i)) { if (i != selIdx) { selIdx = i; out = true; } } - ++i; } ImGui::EndListBox(); } return out; } +bool ListBox(ox::CStringView name, ox::SpanView const&list, size_t &selIdx) noexcept { + return ig::ListBox(name, [list](size_t i) -> ox::CStringView { + return list[i]; + }, list.size(), selIdx); +} + FilePicker::FilePicker( studio::StudioContext &sctx, From 28b1c6dcf4b2d7d1e3c50850f5886ab8d85c9c96 Mon Sep 17 00:00:00 2001 From: Gary Talent Date: Wed, 31 Jan 2024 23:07:40 -0600 Subject: [PATCH 3/3] [ox/preloader] Fix case where alignOf always used NativePlatSpec --- deps/ox/src/ox/preloader/platspecs.hpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deps/ox/src/ox/preloader/platspecs.hpp b/deps/ox/src/ox/preloader/platspecs.hpp index e48001b8..8f9c8397 100644 --- a/deps/ox/src/ox/preloader/platspecs.hpp +++ b/deps/ox/src/ox/preloader/platspecs.hpp @@ -51,7 +51,7 @@ constexpr std::size_t alignOf(const T &v) noexcept { typename PlatSpec::PtrType p = 0; return PlatSpec::alignOf(p); } else { - AlignmentCatcher c; + AlignmentCatcher c; oxAssert(model(c.interface(), &v), "Could not get alignment for type"); return c.biggestAlignment; }