#pragma once #ifndef _IMGUI_MANAGER_H_ #define _IMGUI_MANAGER_H_ #include "Logger.h" #include #include #include #include #include class ApplicationClass; class imguiManager { public: imguiManager(); ~imguiManager(); bool Initialize(HWND hwnd, ID3D11Device* device, ID3D11DeviceContext* deviceContext); void Shutdown(); void Render(); void NewFrame(); void SetupDockspace(); // Widgets void WidgetSpeedSlider(float* speed); void WidgetButton(); void WidgetFPS(); void WidgetAddObject(ApplicationClass* app); void WidgetObjectWindow(ApplicationClass* app); void WidgetTerrainWindow(ApplicationClass* app); void WidgetLightWindow(ApplicationClass* app); void WidgetShaderWindow(ApplicationClass* app); void WidgetEngineSettingsWindow(ApplicationClass* app); void WidgetRenderWindow(ApplicationClass* app, ImVec2 availableSize); void WidgetLogWindow(ApplicationClass* app); bool ImGuiWidgetRenderer(ApplicationClass* app); void SetWindowSize(ImVec2 size) { windowSize = size; } ImVec2 GetWindowSize() const { return windowSize; } // Shader toggles bool m_EnableCelShading; private: bool showObjectWindow; bool showTerrainWindow; bool showLightWindow; bool showShaderWindow; bool showEngineSettingsWindow; bool showLogWindow; bool m_isPhyiscsEnabled = false; ImGuiIO* io; ID3D11Device* m_device; ID3D11DeviceContext* m_deviceContext; ImVec2 windowSize; const std::deque& logBuffer = Logger::Get().GetLogBuffer(); }; #endif