2025-01-18 15:56:25 +01:00

69 lines
1.6 KiB
C++

#pragma once
#ifndef _IMGUI_MANAGER_H_
#define _IMGUI_MANAGER_H_
#include "Logger.h"
#include <imgui.h>
#include <imgui_impl_dx11.h>
#include <imgui_impl_win32.h>
#include <windows.h>
#include <deque>
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 = false;
bool showTerrainWindow = false;
bool showLightWindow = false;
bool showShaderWindow = false;
bool showEngineSettingsWindow = false;
bool showLogWindow = false;
bool m_isPhyiscsEnabled = false;
ImGuiIO* io;
ID3D11Device* m_device;
ID3D11DeviceContext* m_deviceContext;
ImVec2 windowSize;
const std::deque<Logger::LogEntry>& logBuffer = Logger::Get().GetLogBuffer();
};
#endif