From c554cdbc0cf894ccc6c330e0743649a4bdb34658 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Tue, 23 Jan 2024 15:11:26 +0100 Subject: a --- editor/imgui-editors.cpp | 2 +- editor/inspect-types.cpp | 24 ++++++++++++++++++++++-- 2 files changed, 23 insertions(+), 3 deletions(-) (limited to 'editor') diff --git a/editor/imgui-editors.cpp b/editor/imgui-editors.cpp index 358cd200..1c15989f 100644 --- a/editor/imgui-editors.cpp +++ b/editor/imgui-editors.cpp @@ -29,7 +29,7 @@ using vobj_ = vobj_editor::vobj_; StringView scenery_type_to_string(const scenery_& sc) { - switch (sc.proto.sc_type) + switch (sc.proto.scenery_type()) { case scenery_type::none: return "none"_s; case scenery_type::generic: return "generic"_s; diff --git a/editor/inspect-types.cpp b/editor/inspect-types.cpp index c500b050..ab3c04d1 100644 --- a/editor/inspect-types.cpp +++ b/editor/inspect-types.cpp @@ -66,6 +66,9 @@ struct entity_accessors { } }; +template struct overloaded : Ts... { using Ts::operator()...; }; +template overloaded(Ts...) -> overloaded; + template<> struct entity_accessors { static constexpr auto accessors() @@ -74,8 +77,25 @@ struct entity_accessors { auto tuple0 = entity_accessors::accessors(); auto tuple = std::tuple{ E::type::field{"interactive"_s, - [](const scenery& x) { return x.interactive; }, - [](scenery& x, bool value) { x.interactive = value; } + [](const scenery& x) { + return std::visit(overloaded { + [&](const door_scenery& s) { return s.interactive; }, + [&](const generic_scenery& s) { return s.interactive; }, + }, x.subtype); + }, + [](scenery& x, bool b) { + return std::visit(overloaded { + [&](door_scenery& s) { s.interactive = b; }, + [&](generic_scenery& s) { s.interactive = b; }, + }, x.subtype); + }, + [](const scenery& x) { + return std::visit(overloaded { + [&](door_scenery&) { return st::enabled; }, + [&](generic_scenery&) { return st::enabled; }, + [](auto&&) { return st::hidden; }, + }, x.subtype); + }, }, }; return std::tuple_cat(tuple0, tuple); -- cgit v1.2.3