2026-03-20 17:08:06 +08:00
|
|
|
#include "SceneViewPanel.h"
|
|
|
|
|
#include <imgui.h>
|
|
|
|
|
#include <imgui_internal.h>
|
|
|
|
|
|
2026-03-24 20:02:38 +08:00
|
|
|
namespace XCEngine {
|
|
|
|
|
namespace Editor {
|
2026-03-20 17:08:06 +08:00
|
|
|
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
|
2026-03-24 20:02:38 +08:00
|
|
|
}
|
2026-03-20 17:08:06 +08:00
|
|
|
}
|