#include "FrostEd.h"
#include "Modules/ModuleManager.h"
#include "Logging/LogMacros.h"
#include "Windows/WindowsApplication.h"
#include "HierarchyModule.h"
#include "imgui.h"
void FFrostEd::Initialize()
{
FROST_LOG_INFO("Initializing FrostEd...");
// Editor initialization
// ...
FHierarchyModule& HierarchyModule = FModuleManager::Get().LoadModule("Hierarchy");
FWindowsApplication::Get()->GetLayerStack()->PushOverlay(new FFrostEd());
FROST_LOG_INFO("Initialized FrostEd!");
}
void FFrostEd::OnAttach()
{
// Setup the editor
// ...
}
void FFrostEd::OnImGuiRender()
{
static bool OptFullscreen = true;
static bool OptPadding = false;
static ImGuiDockNodeFlags DockspaceFlags = ImGuiDockNodeFlags_None;
ImGuiWindowFlags WindowFlags = ImGuiWindowFlags_MenuBar | ImGuiWindowFlags_NoDocking;
if (OptFullscreen)
{
const ImGuiViewport* Viewport = ImGui::GetMainViewport();
ImGui::SetNextWindowPos(Viewport->WorkPos);
ImGui::SetNextWindowSize(Viewport->WorkSize);
ImGui::SetNextWindowViewport(Viewport->ID);
ImGui::PushStyleVar(ImGuiStyleVar_WindowRounding, 0.0f);
ImGui::PushStyleVar(ImGuiStyleVar_WindowBorderSize, 0.0f);
WindowFlags |= ImGuiWindowFlags_NoTitleBar | ImGuiWindowFlags_NoCollapse | ImGuiWindowFlags_NoResize | ImGuiWindowFlags_NoMove;
WindowFlags |= ImGuiWindowFlags_NoBringToFrontOnFocus | ImGuiWindowFlags_NoNavFocus;
}
else
{
DockspaceFlags &= ~ImGuiDockNodeFlags_PassthruCentralNode;
}
if (DockspaceFlags & ImGuiDockNodeFlags_PassthruCentralNode)
{
WindowFlags |= ImGuiWindowFlags_NoBackground;
}
if (!OptPadding)
{
ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f));
}
ImGui::Begin("FrostEd", (bool*)true, WindowFlags);
if (!OptPadding)
{
ImGui::PopStyleVar();
}
if (OptFullscreen)
{
ImGui::PopStyleVar(2);
}
ImGuiIO& IO = ImGui::GetIO();
if (IO.ConfigFlags & ImGuiConfigFlags_DockingEnable)
{
ImGuiID DockspaceID = ImGui::GetID("FrostEd");
ImGui::DockSpace(DockspaceID, ImVec2(0.0f, 0.0f), DockspaceFlags);
}
// Render the editor
// ...
ImGui::End();
}
void FFrostEd::OnDetach()
{
// Cleanup the editor
// ...
FModuleManager::Get().UnloadModule("Hierarchy");
}