diff options
author | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-23 15:11:26 +0100 |
---|---|---|
committer | Stanislaw Halik <sthalik@misaki.pl> | 2024-01-23 15:11:26 +0100 |
commit | c554cdbc0cf894ccc6c330e0743649a4bdb34658 (patch) | |
tree | 80b5fa2e64136eb2740d9c9524daf92b8a447b3d /editor | |
parent | 573f8f2bcbfd86119e00a13fedc5abf2bf7deafb (diff) |
a
Diffstat (limited to 'editor')
-rw-r--r-- | editor/imgui-editors.cpp | 2 | ||||
-rw-r--r-- | editor/inspect-types.cpp | 24 |
2 files changed, 23 insertions, 3 deletions
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<object, inspect_intent_t> { } }; +template<typename... Ts> struct overloaded : Ts... { using Ts::operator()...; }; +template<typename... Ts> overloaded(Ts...) -> overloaded<Ts...>; + template<> struct entity_accessors<scenery, inspect_intent_t> { static constexpr auto accessors() @@ -74,8 +77,25 @@ struct entity_accessors<scenery, inspect_intent_t> { auto tuple0 = entity_accessors<object, inspect_intent_t>::accessors(); auto tuple = std::tuple{ E::type<bool>::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); |