diff --git a/editor/main.cpp b/editor/main.cpp index 98c410e..4778bd5 100644 --- a/editor/main.cpp +++ b/editor/main.cpp @@ -6,7 +6,7 @@ #include "panels/asset_browser_panel.hpp" #include "panels/inspector_panel.hpp" #include "panels/scene_hierarchy_panel.hpp" -#include "panels/viewport_panel.hpp" +#include "panels/scene_panel.hpp" class Editor : public sophia::Application { public: @@ -29,13 +29,13 @@ class Editor : public sophia::Application { sophia::RenderTargetHandle sceneTarget = resources().create(); sceneViews().create({.scene = sceneHandle, .target = sceneTarget}); - panels().emplace(ui(), sceneTarget, scene, selected); + panels().emplace(ui(), sceneTarget, scene, selected); panels().setDefaultLayout( {.left = {"Scene Hierarchy"}, .right = {"Inspector", "Frame Stats", "PanelRegistry"}, .bottom = {"Asset Browser", "Console"}, - .center = {"Viewport"}}); + .center = {"Scene"}}); } void onUpdate(const sophia::FrameInfo& frameInfo) override {} diff --git a/editor/panels/viewport_panel.cpp b/editor/panels/scene_panel.cpp similarity index 91% rename from editor/panels/viewport_panel.cpp rename to editor/panels/scene_panel.cpp index 3869721..3ff1c3a 100644 --- a/editor/panels/viewport_panel.cpp +++ b/editor/panels/scene_panel.cpp @@ -1,4 +1,4 @@ -#include "viewport_panel.hpp" +#include "scene_panel.hpp" #include @@ -18,7 +18,7 @@ const ImU32 SELECTION_COLOR = IM_COL32(255, 170, 40, 255); } // namespace -ImVec2 ViewportPanel::ViewportTransform::worldToScreen( +ImVec2 ScenePanel::ViewportTransform::worldToScreen( const glm::vec3& world) const { glm::vec4 clip = viewProjection * glm::vec4{world, 1.f}; glm::vec2 ndc = glm::vec2{clip} / clip.w; @@ -27,7 +27,7 @@ ImVec2 ViewportPanel::ViewportTransform::worldToScreen( origin.y + (ndc.y * 0.5f + 0.5f) * size.y}; } -glm::vec2 ViewportPanel::ViewportTransform::screenToWorld( +glm::vec2 ScenePanel::ViewportTransform::screenToWorld( const ImVec2& screen) const { glm::vec2 ndc{(screen.x - origin.x) / size.x * 2.f - 1.f, (screen.y - origin.y) / size.y * 2.f - 1.f}; @@ -35,7 +35,7 @@ glm::vec2 ViewportPanel::ViewportTransform::screenToWorld( return glm::vec2{world} / world.w; } -void ViewportPanel::onUpdate(const sophia::FrameInfo&) { +void ScenePanel::onUpdate(const sophia::FrameInfo&) { drawToolbar(); ImGui::Separator(); @@ -81,9 +81,9 @@ void ViewportPanel::onUpdate(const sophia::FrameInfo&) { ImGui::TextDisabled("%.0f x %.0f", size.x, size.y); } -void ViewportPanel::drawToolbar() { ImGui::Checkbox("Grid", &showGrid); } +void ScenePanel::drawToolbar() { ImGui::Checkbox("Grid", &showGrid); } -void ViewportPanel::drawGrid(ImVec2 origin, ImVec2 size) { +void ScenePanel::drawGrid(ImVec2 origin, ImVec2 size) { constexpr float GRID_STEP = 40.0f; const ImU32 gridColor = IM_COL32(255, 255, 255, 18); const ImVec2 end(origin.x + size.x, origin.y + size.y); @@ -99,7 +99,7 @@ void ViewportPanel::drawGrid(ImVec2 origin, ImVec2 size) { } } -void ViewportPanel::handleInput(const ViewportTransform& viewport) { +void ScenePanel::handleInput(const ViewportTransform& viewport) { const ImGuiIO& io = ImGui::GetIO(); if (ImGui::IsItemActivated()) { @@ -124,7 +124,7 @@ void ViewportPanel::handleInput(const ViewportTransform& viewport) { } } -void ViewportPanel::drawSelection(const ViewportTransform& viewport) { +void ScenePanel::drawSelection(const ViewportTransform& viewport) { if (!selected) { return; } @@ -151,7 +151,7 @@ void ViewportPanel::drawSelection(const ViewportTransform& viewport) { drawList->AddCircle(center, 4.0f, SELECTION_COLOR, 0, 2.0f); } -sophia::Entity ViewportPanel::pick(glm::vec2 world) { +sophia::Entity ScenePanel::pick(glm::vec2 world) { sophia::Entity best; std::optional> bestOrder; diff --git a/editor/panels/viewport_panel.hpp b/editor/panels/scene_panel.hpp similarity index 88% rename from editor/panels/viewport_panel.hpp rename to editor/panels/scene_panel.hpp index 49cd1e2..6a1edff 100644 --- a/editor/panels/viewport_panel.hpp +++ b/editor/panels/scene_panel.hpp @@ -15,11 +15,11 @@ * Picking and moving are 2D: they assume an orthographic camera rotated only * around Z, and work in the z = 0 plane. */ -class ViewportPanel : public sophia::Panel { +class ScenePanel : public sophia::Panel { public: - ViewportPanel(sophia::UI& ui, sophia::RenderTargetHandle target, - sophia::Scene& scene, sophia::Entity& selected) - : Panel{{.name = "Viewport", + ScenePanel(sophia::UI& ui, sophia::RenderTargetHandle target, + sophia::Scene& scene, sophia::Entity& selected) + : Panel{{.name = "Scene", .windowFlags = ImGuiWindowFlags_NoScrollbar | ImGuiWindowFlags_NoScrollWithMouse}}, ui{ui},