From 4e5e29c518d2334626b9e0233906a7c32878bda9 Mon Sep 17 00:00:00 2001 From: chatlanin Date: Fri, 11 Apr 2025 13:09:00 +0300 Subject: [PATCH] add example --- example/layers/meson.build | 2 + .../ui_layer_double/ui_layer_double.cpp | 52 +++++++++++++++++++ .../ui_layer_double/ui_layer_double.hpp | 15 ++++++ example/main.cpp | 4 +- 4 files changed, 72 insertions(+), 1 deletion(-) create mode 100755 example/layers/ui_layer_double/ui_layer_double.cpp create mode 100755 example/layers/ui_layer_double/ui_layer_double.hpp diff --git a/example/layers/meson.build b/example/layers/meson.build index 27a31d9..069965d 100755 --- a/example/layers/meson.build +++ b/example/layers/meson.build @@ -2,10 +2,12 @@ inc += include_directories('.') headers = [ 'ui_layer/ui_layer.hpp', + 'ui_layer_double/ui_layer_double.hpp', ] sources = [ 'ui_layer/ui_layer.cpp', + 'ui_layer_double/ui_layer_double.cpp', ] lib = library( diff --git a/example/layers/ui_layer_double/ui_layer_double.cpp b/example/layers/ui_layer_double/ui_layer_double.cpp new file mode 100755 index 0000000..b34aec0 --- /dev/null +++ b/example/layers/ui_layer_double/ui_layer_double.cpp @@ -0,0 +1,52 @@ +#include "ui_layer_double.hpp" + +#include "utils.hpp" + +namespace example +{ + void ui_layer_double::on_attach() + { + VE::CONNECT(this); + + hack::log()("on_attach"); + } + + void ui_layer_double::render() + { + ImGui::SetNextWindowPos(ImVec2{ 10.f, 10.f }); + ImGui::SetNextWindowSize(m_size); + + if (!ImGui::Begin(VE_NAME("Test signal_double"), nullptr, m_win_flags)) ImGui::End(); + + VE_PUSH_FONT(REGULAR, 20); + if (ImGui::Button("Test signal_double", ImVec2(128, 130))) + VE::EMIT(test_event::TEST_EVEN, std::string("test event message ui_layer_double")); + VE_POP_FONT(); + + ImGui::End(); + } + + void ui_layer_double::on_event(VE::event e) + { + // для событий от перефирии + // if (e.m_type.type() == typeid(VE::event_type)) + // { + // auto t = std::any_cast(e.m_type); + // if (t != VE::event_type::MOUSE_CURSOR_POSITION) + // hack::log()((int)t); + // } + + if (e.m_type.type() == typeid(test_event)) + { + auto t = std::any_cast(e.m_type); + if (t == test_event::TEST_EVEN) + hack::log()(std::any_cast(e.m_data)); + } + } + + void ui_layer_double::update() + { + + } +} + diff --git a/example/layers/ui_layer_double/ui_layer_double.hpp b/example/layers/ui_layer_double/ui_layer_double.hpp new file mode 100755 index 0000000..b0a809c --- /dev/null +++ b/example/layers/ui_layer_double/ui_layer_double.hpp @@ -0,0 +1,15 @@ +#pragma once + +#include + +namespace example +{ + class ui_layer_double : public VE::layer, public VE::flags + { + VE_OVERIDE(); + + ImVec2 m_size = ImVec2{ 400.f, 400.f }; + ImVec2 m_pos = ImVec2{ 400.f, 400.f }; + }; +} + diff --git a/example/main.cpp b/example/main.cpp index e6de239..c698c16 100755 --- a/example/main.cpp +++ b/example/main.cpp @@ -1,4 +1,5 @@ #include "layers/ui_layer/ui_layer.hpp" +#include "layers/ui_layer_double/ui_layer_double.hpp" namespace example { @@ -15,7 +16,8 @@ auto main(int argc, char* args[]) -> int example::app app{ "vertex_engine_sandbox" }; app.push_layer( - new example::ui_layer{} + new example::ui_layer{}, + new example::ui_layer_double{} ); app.run(); }