summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorStanislaw Halik <sthalik@misaki.pl>2023-02-24 09:19:19 +0100
committerStanislaw Halik <sthalik@misaki.pl>2023-02-24 09:19:19 +0100
commite9311fe8a12d7834b0d910edd65eacc5e732a0ff (patch)
tree517fb2e20298f5095fdc18a1800c2a807dc879a4
parent83bca7d6861a701e8ba383a93076f346db393a33 (diff)
a
-rw-r--r--editor/imgui.cpp3
-rw-r--r--editor/inspect-types.cpp11
-rw-r--r--editor/inspect.cpp10
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");