3#include "Base/Application.h"
6#include <imgui/imgui.h>
7#include <imgui/backends/imgui_impl_glfw.h>
8#include <imgui/backends/imgui_impl_opengl3.h>
10#include <imnodes/imnodes.h>
13#include <GLFW/glfw3.h>
17static void Log(
const char *log)
19 std::cout << log << std::endl;
26 Log(
"Failed to Initialize GLAD!");
31static void InitImGui(std::string &configPath)
34 ImGui::CreateContext();
35 ImPlot::CreateContext();
36 ImNodes::CreateContext();
37 ImGuiIO &io = ImGui::GetIO();
39 io.IniFilename = configPath.c_str();
40 io.ConfigFlags |= ImGuiConfigFlags_NavEnableKeyboard;
41 io.ConfigFlags |= ImGuiConfigFlags_DockingEnable;
43 io.ConfigFlags |= ImGuiConfigFlags_ViewportsEnable;
45 io.ConfigViewportsNoTaskBarIcon =
false;
46 io.ConfigViewportsNoAutoMerge =
true;
47 ImGui::StyleColorsDark();
48 ImGuiStyle &style = ImGui::GetStyle();
50 if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
52 style.WindowRounding = 0.0f;
53 style.Colors[ImGuiCol_WindowBg].w = 1.0f;
56 ImGui_ImplGlfw_InitForOpenGL(
static_cast<GLFWwindow *
>(Application::Get()->GetWindow()->GetNativeWindow()),
true);
57 ImGui_ImplOpenGL3_Init(
"#version 330");
60static void ImGuiShutdown()
62 ImGui_ImplOpenGL3_Shutdown();
63 ImGui_ImplGlfw_Shutdown();
64 ImNodes::DestroyContext();
65 ImPlot::DestroyContext();
66 ImGui::DestroyContext();
73Application::Application()
77void Application::SetWindowConfigPath(std::string path)
79 windowConfigPath = path;
82void Application::SetLogsDir(std::string ld)
87void Application::SetTitle(std::string title)
89 m_WindowTitle = title;
92void Application::Init()
94 m_Window =
new Window(m_WindowTitle);
95 m_Window->SetVSync(
true);
96 m_Window->SetVisible(
false);
100 InitImGui(windowConfigPath);
103void Application::Render()
107void Application::ImGuiRenderBegin()
109 ImGuiIO &io = ImGui::GetIO();
110 ImGui_ImplGlfw_NewFrame();
111 ImGui_ImplOpenGL3_NewFrame();
115void Application::ImGuiRenderEnd()
119 ImGui_ImplOpenGL3_RenderDrawData(ImGui::GetDrawData());
120 ImGuiIO &io = ImGui::GetIO();
122 if (io.ConfigFlags & ImGuiConfigFlags_ViewportsEnable)
124 GLFWwindow *backup_current_context = glfwGetCurrentContext();
125 ImGui::UpdatePlatformWindows();
126 ImGui::RenderPlatformWindowsDefault();
127 glfwMakeContextCurrent(backup_current_context);
131bool Application::IsActive()
136void Application::RenderImGui()
145void Application::Run(std::string loadFile)
147 m_Window->SetVisible(
true);
148 float oneSecCounter = 0;
152 float currentTime = glfwGetTime();
153 float deltaTime = currentTime - previousTime;
154 previousTime = currentTime;
155 oneSecCounter += deltaTime;
158 if (oneSecCounter >= 1)
173Application::~Application()
175 std::cout <<
"Shutting down Application" << std::endl;