diff --git a/headers/enduro2d/high/components/camera.hpp b/headers/enduro2d/high/components/camera.hpp index 20449dac..c276e8d0 100644 --- a/headers/enduro2d/high/components/camera.hpp +++ b/headers/enduro2d/high/components/camera.hpp @@ -16,6 +16,7 @@ namespace e2d { class camera final { public: + class input final {}; class gizmos final {}; public: ENUM_HPP_CLASS_DECL(modes, u8, @@ -77,6 +78,20 @@ namespace e2d const collect_context& ctx) const; }; + template <> + class factory_loader final : factory_loader<> { + public: + static const char* schema_source; + + bool operator()( + camera::input& component, + const fill_context& ctx) const; + + bool operator()( + asset_dependencies& dependencies, + const collect_context& ctx) const; + }; + template <> class factory_loader final : factory_loader<> { public: diff --git a/samples/bin/library/prefabs/camera_prefab.json b/samples/bin/library/prefabs/camera_prefab.json index 8ebbb405..35983ca9 100644 --- a/samples/bin/library/prefabs/camera_prefab.json +++ b/samples/bin/library/prefabs/camera_prefab.json @@ -6,6 +6,7 @@ "camera" : { "background" : [1.0, 0.4, 0.0, 1.0] }, + "camera.input" : {}, "camera.gizmos" : {} } } diff --git a/samples/bin/library/scenes/sample_08.json b/samples/bin/library/scenes/sample_08.json index e832b4ca..81630dc8 100644 --- a/samples/bin/library/scenes/sample_08.json +++ b/samples/bin/library/scenes/sample_08.json @@ -6,12 +6,7 @@ } }, "children" : [{ - "prototype" : "../prefabs/camera_prefab.json", - "components" : { - "named" : { - "name" : "camera" - } - } + "prototype" : "../prefabs/camera_prefab.json" },{ "prototype" : "../prefabs/ship_prefab.json", "components" : { diff --git a/sources/enduro2d/high/components/camera.cpp b/sources/enduro2d/high/components/camera.cpp index e255c35a..ed07b262 100644 --- a/sources/enduro2d/high/components/camera.cpp +++ b/sources/enduro2d/high/components/camera.cpp @@ -128,6 +128,32 @@ namespace e2d } } +namespace e2d +{ + const char* factory_loader::schema_source = R"json({ + "type" : "object", + "required" : [], + "additionalProperties" : false, + "properties" : {} + })json"; + + bool factory_loader::operator()( + camera::input& component, + const fill_context& ctx) const + { + E2D_UNUSED(component, ctx); + return true; + } + + bool factory_loader::operator()( + asset_dependencies& dependencies, + const collect_context& ctx) const + { + E2D_UNUSED(dependencies, ctx); + return true; + } +} + namespace e2d { const char* factory_loader::schema_source = R"json({ @@ -159,6 +185,18 @@ namespace e2d const char* component_inspector::title = "camera"; void component_inspector::operator()(gcomponent& c) const { + if ( bool input = c.owner().component().exists(); + ImGui::Checkbox("input", &input) ) + { + if ( input ) { + c.owner().component().ensure(); + } else { + c.owner().component().remove(); + } + } + + ImGui::SameLine(); + if ( bool gizmos = c.owner().component().exists(); ImGui::Checkbox("gizmos", &gizmos) ) { diff --git a/sources/enduro2d/high/starter.cpp b/sources/enduro2d/high/starter.cpp index a75ca6a9..a146d74d 100644 --- a/sources/enduro2d/high/starter.cpp +++ b/sources/enduro2d/high/starter.cpp @@ -243,6 +243,7 @@ namespace e2d .register_component("actor") .register_component("behaviour") .register_component("camera") + .register_component("camera.input") .register_component("camera.gizmos") .register_component("rect_collider") .register_component("circle_collider") @@ -265,6 +266,7 @@ namespace e2d .register_component("actor") .register_component("behaviour") .register_component("camera") + //.register_component("camera.input") //.register_component("camera.gizmos") .register_component("rect_collider") .register_component("circle_collider")