#include "SceneViewPanel.h" #include #include namespace UI { SceneViewPanel::SceneViewPanel() : Panel("Scene") {} void SceneViewPanel::Render() { ImGui::Begin(m_name.c_str(), nullptr, ImGuiWindowFlags_None); ImVec2 canvasSize = ImGui::GetContentRegionAvail(); ImDrawList* drawList = ImGui::GetWindowDrawList(); ImVec2 canvasPos = ImGui::GetCursorScreenPos(); ImU32 bgColor = IM_COL32(30, 30, 30, 255); drawList->AddRectFilled(canvasPos, ImVec2(canvasPos.x + canvasSize.x, canvasPos.y + canvasSize.y), bgColor); RenderGrid(); ImGui::End(); } void SceneViewPanel::RenderGrid() { ImDrawList* drawList = ImGui::GetWindowDrawList(); ImVec2 canvasPos = ImGui::GetCursorScreenPos(); ImVec2 canvasSize = ImGui::GetContentRegionAvail(); float gridSize = 50.0f; ImU32 gridColor = IM_COL32(50, 50, 50, 255); for (float x = fmodf(0, gridSize); x < canvasSize.x; x += gridSize) { drawList->AddLine( ImVec2(canvasPos.x + x, canvasPos.y), ImVec2(canvasPos.x + x, canvasPos.y + canvasSize.y), gridColor ); } for (float y = fmodf(0, gridSize); y < canvasSize.y; y += gridSize) { drawList->AddLine( ImVec2(canvasPos.x, canvasPos.y + y), ImVec2(canvasPos.x + canvasSize.x, canvasPos.y + y), gridColor ); } const char* label = "Scene View"; ImVec2 labelSize = ImGui::CalcTextSize(label); ImVec2 labelPos(canvasPos.x + 10, canvasPos.y + 10); drawList->AddText(labelPos, IM_COL32(100, 100, 100, 255), label); } }