From d58ddf6c359ecdc1015628af87bf200bb79ececc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= Date: Fri, 3 Apr 2026 15:44:43 +0200 Subject: [PATCH] refactored imgui layer into nonlayer version it returned to being a member of application with new init and shutdown function which is ran by the con- and destructors, and init is called at the end of the app init, with this it inits before any layer and layers can use the onimguirender to draw with imgui --- SakuraCore/src/Application.cpp | 13 +++----- SakuraCore/src/Application.h | 4 +-- .../src/{imguilayer.cpp => imguiinit.cpp} | 30 +++++-------------- SakuraCore/src/imguiinit.h | 14 +++++++++ SakuraCore/src/imguilayer.h | 20 ------------- 5 files changed, 27 insertions(+), 54 deletions(-) rename SakuraCore/src/{imguilayer.cpp => imguiinit.cpp} (66%) create mode 100644 SakuraCore/src/imguiinit.h delete mode 100644 SakuraCore/src/imguilayer.h diff --git a/SakuraCore/src/Application.cpp b/SakuraCore/src/Application.cpp index 76689bf..d1dab95 100644 --- a/SakuraCore/src/Application.cpp +++ b/SakuraCore/src/Application.cpp @@ -8,7 +8,7 @@ #include "SDL3/SDL_timer.h" #include "imgui.h" #include "imgui_impl_sdl3.h" -#include "imguilayer.h" +#include "imguiinit.h" #define SDL_MAIN_HANDLED 1 @@ -74,10 +74,7 @@ bool Application::Init() { SDL_SetRenderVSync(m_Renderer, 1); - // m_ImGuiLayer = new SakuraVNE::ImGuiLayer(); - // PushOverlay(m_ImGuiLayer); - - this->PushOverlay(); + m_ImGui = new SakuraVNE::ImGuiInit(); return true; } @@ -126,8 +123,7 @@ void Application::Run() { } // Rendering - // m_ImGuiLayer->Begin(); - this->GetLayer()->Begin(); + m_ImGui->Begin(); SDL_SetRenderScale(m_Renderer, io.DisplayFramebufferScale.x, io.DisplayFramebufferScale.y); SDL_SetRenderDrawColor(m_Renderer, (Uint8)111, (Uint8)232, (Uint8)168, (Uint8)0); @@ -137,8 +133,7 @@ void Application::Run() { layer->OnImGuiRender(); } - // m_ImGuiLayer->End(); - this->GetLayer()->End(); + m_ImGui->End(); SDL_RenderPresent(m_Renderer); } diff --git a/SakuraCore/src/Application.h b/SakuraCore/src/Application.h index 1e08212..976d29d 100644 --- a/SakuraCore/src/Application.h +++ b/SakuraCore/src/Application.h @@ -4,7 +4,7 @@ #include "LayerStack.h" #include "SDL3/SDL_render.h" #include "SDL3/SDL_video.h" -// #include "imguilayer.h" +#include "imguiinit.h" #include #include @@ -96,7 +96,7 @@ private: AppData m_AppData; SakuraVNE::LayerStack m_LayerStack; - // SakuraVNE::ImGuiLayer *m_ImGuiLayer; + SakuraVNE::ImGuiInit *m_ImGui; static Application *s_Instance; }; diff --git a/SakuraCore/src/imguilayer.cpp b/SakuraCore/src/imguiinit.cpp similarity index 66% rename from SakuraCore/src/imguilayer.cpp rename to SakuraCore/src/imguiinit.cpp index 322aaa6..4b562a8 100644 --- a/SakuraCore/src/imguilayer.cpp +++ b/SakuraCore/src/imguiinit.cpp @@ -1,15 +1,15 @@ -#include "imguilayer.h" +#include "imguiinit.h" #include "Application.h" #include "Log.h" -#include "SDL3/SDL_stdinc.h" #include "imgui.h" #include "imgui_impl_sdl3.h" #include "imgui_impl_sdlrenderer3.h" namespace SakuraVNE { -ImGuiLayer::ImGuiLayer() : Layer("ImGuiLayer") {} +ImGuiInit::ImGuiInit() { Init(); } +ImGuiInit::~ImGuiInit() { Shutdown(); } -void ImGuiLayer::OnAttach() { +void ImGuiInit::Init() { // Imgui init IMGUI_CHECKVERSION(); ImGui::CreateContext(); @@ -26,14 +26,14 @@ void ImGuiLayer::OnAttach() { LOG_INFO("Imgui layer OnAttach ran"); } -void ImGuiLayer::OnDetach() { +void ImGuiInit::Shutdown() { ImGui_ImplSDLRenderer3_Shutdown(); ImGui_ImplSDL3_Shutdown(); ImGui::DestroyContext(); LOG_WARN("Imgui on detach ran"); } -void ImGuiLayer::Begin() { +void ImGuiInit::Begin() { ImGui_ImplSDLRenderer3_NewFrame(); ImGui_ImplSDL3_NewFrame(); ImGui::NewFrame(); @@ -41,7 +41,7 @@ void ImGuiLayer::Begin() { ImGui::DockSpaceOverViewport(); } -void ImGuiLayer::End() { +void ImGuiInit::End() { ImGuiIO &io = ImGui::GetIO(); Application &app = Application::Get(); @@ -51,20 +51,4 @@ void ImGuiLayer::End() { ImGui_ImplSDLRenderer3_RenderDrawData(ImGui::GetDrawData(), Application::Get().GetSDLRenderer()); ImGui::EndFrame(); } - -void ImGuiLayer::OnImGuiRender() { - ImGuiIO &io = ImGui::GetIO(); - bool demoWindow = true; - ImGui::Begin("Framerate"); - ImGui::ShowDemoWindow(&demoWindow); - ImGui::Text("Application avg %.3f ms/frame (%.1f FPS)", 1000.0f / io.Framerate, io.Framerate); - - if (ImGui::Button("Quit")) { - Application::Get().SetRunningState(false); - } - ImGui::End(); -} - -void ImGuiLayer::OnFrame(Uint64 time) {} -void ImGuiLayer::OnEvent() {} } // namespace SakuraVNE diff --git a/SakuraCore/src/imguiinit.h b/SakuraCore/src/imguiinit.h new file mode 100644 index 0000000..57ab7f8 --- /dev/null +++ b/SakuraCore/src/imguiinit.h @@ -0,0 +1,14 @@ +#pragma once + +namespace SakuraVNE { +class ImGuiInit { +public: + ImGuiInit(); + ~ImGuiInit(); + + void Init(); + void Shutdown(); + void Begin(); + void End(); +}; +} // namespace SakuraVNE diff --git a/SakuraCore/src/imguilayer.h b/SakuraCore/src/imguilayer.h deleted file mode 100644 index 2c5ff64..0000000 --- a/SakuraCore/src/imguilayer.h +++ /dev/null @@ -1,20 +0,0 @@ -#pragma once - -#include "Layer.h" - -namespace SakuraVNE { -class ImGuiLayer : public Layer { -public: - ImGuiLayer(); - ~ImGuiLayer() = default; - - virtual void OnFrame(Uint64 timestamp) override; - virtual void OnAttach() override; - virtual void OnDetach() override; - virtual void OnImGuiRender() override; - virtual void OnEvent() override; - - void Begin(); - void End(); -}; -} // namespace SakuraVNE