From 13286719ab2af228a41d7b05a0baefdbb6c6728d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hatvani=20Tam=C3=A1s?= Date: Mon, 16 Mar 2026 20:13:33 +0100 Subject: [PATCH] imgui layer --- SakuraCore/src/imguilayer.cpp | 46 +++++++++++++++++++++++++++++++++++ SakuraCore/src/imguilayer.h | 21 ++++++++++++++++ 2 files changed, 67 insertions(+) create mode 100644 SakuraCore/src/imguilayer.cpp create mode 100644 SakuraCore/src/imguilayer.h diff --git a/SakuraCore/src/imguilayer.cpp b/SakuraCore/src/imguilayer.cpp new file mode 100644 index 0000000..f9e224c --- /dev/null +++ b/SakuraCore/src/imguilayer.cpp @@ -0,0 +1,46 @@ +#include "imguilayer.h" +#include "Application.h" +#include "Log.h" +#include "imgui.h" +#include "imgui_impl_sdl3.h" +#include "imgui_impl_sdlrenderer3.h" + +namespace SakuraVNE { +ImGuiLayer::ImGuiLayer() : Layer("ImGuiLayer") {} + +void ImGuiLayer::OnAttach() { + // Imgui init + IMGUI_CHECKVERSION(); + ImGui::CreateContext(); + + ImGuiIO &io = ImGui::GetIO(); + io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard; + + ImGui::StyleColorsDark(); + + ImGui_ImplSDL3_InitForSDLRenderer(Application::Get().GetSDLWindow(), Application::Get().GetSDLRenderer()); + ImGui_ImplSDLRenderer3_Init(Application::Get().GetSDLRenderer()); + + LOG_INFO("Imgui layer OnAttach ran"); +} + +void ImGuiLayer::OnDetach() { + ImGui_ImplSDLRenderer3_Shutdown(); + ImGui_ImplSDL3_Shutdown(); + ImGui::DestroyContext(); + LOG_WARN("Imgui on detach ran"); +} + +void ImGuiLayer::Begin() { + ImGui_ImplSDLRenderer3_NewFrame(); + ImGui_ImplSDL3_NewFrame(); + ImGui::NewFrame(); +} + +void ImGuiLayer::End() { + ImGuiIO &io = ImGui::GetIO(); + + Application &app = Application::Get(); + io.DisplaySize = ImVec2((float)app.GetWindowData().width, (float)app.GetWindowData().height); +} +} // namespace SakuraVNE diff --git a/SakuraCore/src/imguilayer.h b/SakuraCore/src/imguilayer.h new file mode 100644 index 0000000..7526742 --- /dev/null +++ b/SakuraCore/src/imguilayer.h @@ -0,0 +1,21 @@ +#pragma once + +#include "Layer.h" + +namespace SakuraVNE { +class ImGuiLayer : public Layer { +public: + ImGuiLayer(); + ~ImGuiLayer() = default; + + // virtual void OnStart() override; + // virtual void OnFrame(float timestamp) override; + // virtual void OnEnd() override; + virtual void OnAttach() override; + virtual void OnDetach() override; + // virtual void OnEvent() override; + + void Begin(); + void End(); +}; +} // namespace SakuraVNE