From 0032814ed66e289faa170403553cd3ef1859a0e1 Mon Sep 17 00:00:00 2001 From: Atdunbg <979541498@qq.com> Date: Sun, 22 Jun 2025 21:54:24 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=B8=89=E7=BB=B4=E6=8E=A7?= =?UTF-8?q?=E4=BB=B6=E5=92=8C=E6=A8=A1=E5=9E=8B=E5=87=BA=E7=8E=B0=E5=81=8F?= =?UTF-8?q?=E7=A7=BB=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Sandbox/src/Editor/EditorLayer.cpp | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/Sandbox/src/Editor/EditorLayer.cpp b/Sandbox/src/Editor/EditorLayer.cpp index de11441..0550934 100644 --- a/Sandbox/src/Editor/EditorLayer.cpp +++ b/Sandbox/src/Editor/EditorLayer.cpp @@ -41,11 +41,16 @@ namespace Hazel m_PlayIcon = Texture2D::Create("Resources/Icons/PlayButton.png"); m_StopIcon = Texture2D::Create("Resources/Icons/PauseButton.png"); - m_ActiveScene = CreateRef(); + m_EditorScene = CreateRef(); + m_EditorScene->OnViewportResize((uint32_t)m_ViewPortSize.x, (uint32_t)m_ViewPortSize.y); + m_ActiveScene = m_EditorScene; m_EditorCamera = EditorCamera(45.0f, 1.667f, 0.1f, 1000.0f); m_SceneHierachyPanel.SetContext(m_ActiveScene); + + m_GizmoType = ImGuizmo::OPERATION::TRANSLATE; + } void EditorLayer::OnDetech() @@ -159,7 +164,7 @@ namespace Hazel // any change of dockspace/settings would lead to windows being stuck in limbo and never being visible. if (!opt_padding) ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, ImVec2(0.0f, 0.0f)); - ImGui::Begin("DockSpace Demo", &dockspaceOpen, window_flags); + ImGui::Begin("DockSpace", &dockspaceOpen, window_flags); if (!opt_padding) ImGui::PopStyleVar(); @@ -169,7 +174,7 @@ namespace Hazel // Submit the DockSpace ImGuiIO& io = ImGui::GetIO(); ImGuiStyle& style = ImGui::GetStyle(); - style.WindowMinSize.x = 350.0f; + style.WindowMinSize.x = 364.0f; if (io.ConfigFlags & ImGuiConfigFlags_DockingEnable) { ImGuiID dockspace_id = ImGui::GetID("MyDockSpace"); @@ -189,6 +194,8 @@ namespace Hazel NewScene(); if (ImGui::MenuItem("Open...", "Ctrl+O")) OpenScene(); + if (ImGui::MenuItem("Save", "Ctrl+S", false, m_ActiveScene ? true : false)) + SaveScene(); if (ImGui::MenuItem("Save As...", "Ctrl+Shift+S")) SaveSceneAs(); @@ -234,7 +241,7 @@ namespace Hazel // ViewPort { ImGui::PushStyleVar(ImGuiStyleVar_WindowPadding, {0.0f, 0.0f}); - ImGui::Begin("Viewport"); + ImGui::Begin("Viewport", nullptr, ImGuiWindowFlags_NoCollapse); auto viewportOffet = ImGui::GetCursorPos(); m_ViewportFocused = ImGui::IsWindowFocused(); m_ViewportHovered = ImGui::IsWindowHovered(); @@ -248,6 +255,8 @@ namespace Hazel // ImGui::Text("Viewport: (%.2f, %.2f)", viewPortPanelSize.x, viewPortPanelSize.y); ImGui::Image(m_FrameBuffer->GetColorAttachmentID(), {m_ViewPortSize.x, m_ViewPortSize.y}, {0, 1}, {1, 0}); + const ImVec2 &viewPortMin = ImGui::GetItemRectMin(); // left-top pos + const ImVec2 &viewPortMax = ImGui::GetItemRectMax(); // right-buttom pos if (ImGui::BeginDragDropTarget()) { @@ -277,13 +286,8 @@ namespace Hazel ImGuizmo::SetOrthographic(false); ImGuizmo::SetDrawlist(); - const float windowWidth = ImGui::GetWindowWidth(); - const float windowHeight = ImGui::GetWindowHeight(); - ImVec2 windowPos = ImGui::GetWindowPos(); - windowPos.y += m_ViewPortSize.y - windowsSize.y; - - ImGuizmo::SetRect(windowPos.x, windowPos.y, windowWidth, windowHeight); + ImGuizmo::SetRect(viewPortMin.x, viewPortMin.y, viewPortMax.x - viewPortMin.x, viewPortMax.y - viewPortMin.y); if (m_GizmoType != -1) { @@ -418,7 +422,7 @@ namespace Hazel void EditorLayer::OnScenePlay() { - SaveScene(); + // SaveScene(); m_SceneState = SceneState::Play; m_ActiveScene = Scene::Copy(m_EditorScene);