diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2023-02-24 09:19:19 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2023-02-24 09:19:19 +0100 |
commit | e9311fe8a12d7834b0d910edd65eacc5e732a0ff (patch) | |
tree | 517fb2e20298f5095fdc18a1800c2a807dc879a4 | |
parent | 83bca7d6861a701e8ba383a93076f346db393a33 (diff) |
a
-rw-r--r-- | editor/imgui.cpp | 3 | ||||
-rw-r--r-- | editor/inspect-types.cpp | 11 | ||||
-rw-r--r-- | editor/inspect.cpp | 10 |
3 files changed, 13 insertions, 11 deletions
diff --git a/editor/imgui.cpp b/editor/imgui.cpp index faeb2229..6126dda0 100644 --- a/editor/imgui.cpp +++ b/editor/imgui.cpp @@ -112,7 +112,8 @@ void app::draw_ui() draw_editor_pane(main_menu_height); draw_fps(); draw_tile_under_cursor(); - draw_inspector(); + if (_editor.mode() == editor_mode::none) + draw_inspector(); ImGui::EndFrame(); } diff --git a/editor/inspect-types.cpp b/editor/inspect-types.cpp index d4feb1c3..c7c38398 100644 --- a/editor/inspect-types.cpp +++ b/editor/inspect-types.cpp @@ -21,7 +21,7 @@ template<> struct entity_accessors<scenery_ref> { { using entity = Entity<scenery_ref>; using frame_t = scenery::frame_t; - constexpr auto tuple = std::make_tuple( + return std::tuple{ entity::type<scenery::frame_t>::field{"frame"_s, [](const scenery_ref& x) { return x.frame.frame; }, [](scenery_ref& x, frame_t value) { x.frame.frame = value; }, @@ -39,15 +39,14 @@ template<> struct entity_accessors<scenery_ref> { entity::type<bool>::field{"interactive"_s, [](const scenery_ref& x) { return x.frame.interactive; }, [](scenery_ref& x, bool value) { x.frame.interactive = value; } - } + }, #ifdef TEST_STR - , entity::type<String>::field{"string"_s, + entity::type<String>::field{"string"_s, [](const scenery_ref&) { return my_str; }, [](scenery_ref&, String value) { my_str = std::move(value); } - } + }, #endif - ); - return tuple; + }; } }; diff --git a/editor/inspect.cpp b/editor/inspect.cpp index aa17029a..d17ebf74 100644 --- a/editor/inspect.cpp +++ b/editor/inspect.cpp @@ -97,11 +97,12 @@ void do_inspect_field(void* datum, const erased_accessor& accessor, field_repr r { auto [min, max] = accessor.get_range(datum).convert<T>(); constexpr auto igdt = IGDT<T>; - T step(1), *step_ = !std::is_floating_point_v<T> ? &step : nullptr; + constexpr T step(!std::is_floating_point_v<T> ? T(1) : T(1e-6f)), + step2(!std::is_floating_point_v<T> ? T(10) : T(1e-3f)); switch (repr) { default: fm_warn_once("invalid repr enum value '%zu'", (std::size_t)repr); break; - case field_repr::input: ret = ImGui::InputScalar(label, igdt, &value, step_); break; + case field_repr::input: ret = ImGui::InputScalar(label, igdt, &value, &step, &step2); break; case field_repr::slider: ret = ImGui::SliderScalar(label, igdt, &value, &min, &max); break; case field_repr::drag: ret = ImGui::DragScalar(label, igdt, &value, 1, &min, &max); break; case field_repr::cbx: { @@ -135,14 +136,15 @@ void do_inspect_field(void* datum, const erased_accessor& accessor, field_repr r using U = typename T::Type; auto [min, max] = accessor.get_range(datum).convert<T>(); constexpr auto igdt = IGDT<U>; - T step = T(U(1)), *step_ = !std::is_floating_point_v<U> ? &step : nullptr; + constexpr T step(!std::is_floating_point_v<U> ? U(1) : U(1e-6f)), + step2(!std::is_floating_point_v<U> ? U(10) : U(1e-3f)); switch (repr) { default: fm_warn_once("invalid repr enum value '%zu'", (std::size_t)repr); break; case field_repr::input: - ret = ImGui::InputScalarN(label, igdt, &value, T::Size, step_); + ret = ImGui::InputScalarN(label, igdt, &value, T::Size, &step, &step2); break; case field_repr::drag: fm_warn_once("can't use imgui input drag mode for vector type"); |