Refactor new editor boundaries and test ownership
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
#include "Features/Scene/SceneViewportController.h"
|
||||
|
||||
#include "Rendering/Viewport/ViewportHostService.h"
|
||||
#include "Rendering/Viewport/ViewportObjectPickerService.h"
|
||||
#include "Scene/EditorSceneRuntime.h"
|
||||
#include "State/EditorCommandFocusService.h"
|
||||
|
||||
@@ -106,12 +106,12 @@ bool TryResolveToolModeShortcut(
|
||||
void ApplySceneToolMode(
|
||||
SceneToolMode mode,
|
||||
EditorSceneRuntime& sceneRuntime,
|
||||
LegacySceneViewportGizmo& legacyGizmo) {
|
||||
SceneViewportTransformGizmo& transformGizmo) {
|
||||
if (sceneRuntime.GetToolMode() == mode) {
|
||||
return;
|
||||
}
|
||||
|
||||
legacyGizmo.CancelDrag(sceneRuntime);
|
||||
transformGizmo.CancelDrag(sceneRuntime);
|
||||
sceneRuntime.SetToolMode(mode);
|
||||
}
|
||||
|
||||
@@ -119,12 +119,12 @@ void ApplySceneToolMode(
|
||||
|
||||
void SceneViewportController::Initialize(
|
||||
const std::filesystem::path& repoRoot,
|
||||
Host::TextureHost& renderer) {
|
||||
Ports::TexturePort& renderer) {
|
||||
m_toolOverlay.Initialize(repoRoot, renderer);
|
||||
ResetInteractionState();
|
||||
}
|
||||
|
||||
void SceneViewportController::Shutdown(Host::TextureHost& renderer) {
|
||||
void SceneViewportController::Shutdown(Ports::TexturePort& renderer) {
|
||||
m_toolOverlay.Shutdown(renderer);
|
||||
ResetInteractionState();
|
||||
}
|
||||
@@ -132,7 +132,7 @@ void SceneViewportController::Shutdown(Host::TextureHost& renderer) {
|
||||
void SceneViewportController::ResetInteractionState() {
|
||||
ResetFrameState();
|
||||
m_toolOverlay.ResetFrame();
|
||||
m_legacyGizmo.ResetVisualState();
|
||||
m_transformGizmo.ResetVisualState();
|
||||
}
|
||||
|
||||
void SceneViewportController::SetCommandFocusService(
|
||||
@@ -142,7 +142,7 @@ void SceneViewportController::SetCommandFocusService(
|
||||
|
||||
void SceneViewportController::Update(
|
||||
EditorSceneRuntime& sceneRuntime,
|
||||
ViewportHostService& viewportHostService,
|
||||
const IViewportObjectPickerService& viewportObjectPicker,
|
||||
const UIEditorWorkspaceComposeState& composeState,
|
||||
const UIEditorWorkspaceComposeFrame& composeFrame) {
|
||||
const UIEditorWorkspaceViewportComposeFrame* viewportFrame =
|
||||
@@ -150,8 +150,8 @@ void SceneViewportController::Update(
|
||||
const UIEditorWorkspacePanelPresentationState* panelState =
|
||||
FindUIEditorWorkspacePanelPresentationState(composeState, kScenePanelId);
|
||||
if (viewportFrame == nullptr || panelState == nullptr) {
|
||||
if (m_legacyGizmo.IsActive()) {
|
||||
m_legacyGizmo.CancelDrag(sceneRuntime);
|
||||
if (m_transformGizmo.IsActive()) {
|
||||
m_transformGizmo.CancelDrag(sceneRuntime);
|
||||
}
|
||||
sceneRuntime.SetHoveredToolHandle(SceneToolHandle::None);
|
||||
ResetInteractionState();
|
||||
@@ -190,8 +190,8 @@ void SceneViewportController::Update(
|
||||
m_navigationState = {};
|
||||
m_hoveredToolOverlayIndex = kSceneViewportToolOverlayInvalidIndex;
|
||||
m_activeToolOverlayIndex = kSceneViewportToolOverlayInvalidIndex;
|
||||
if (m_legacyGizmo.IsActive()) {
|
||||
m_legacyGizmo.CancelDrag(sceneRuntime);
|
||||
if (m_transformGizmo.IsActive()) {
|
||||
m_transformGizmo.CancelDrag(sceneRuntime);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -218,13 +218,13 @@ void SceneViewportController::Update(
|
||||
if (transition.pressed &&
|
||||
transitionHoveredToolOverlayIndex !=
|
||||
kSceneViewportToolOverlayInvalidIndex &&
|
||||
!m_legacyGizmo.IsActive()) {
|
||||
!m_transformGizmo.IsActive()) {
|
||||
m_activeToolOverlayIndex = transitionHoveredToolOverlayIndex;
|
||||
if (m_activeToolOverlayIndex < m_toolOverlay.GetFrame().buttons.size()) {
|
||||
ApplySceneToolMode(
|
||||
m_toolOverlay.GetFrame().buttons[m_activeToolOverlayIndex].mode,
|
||||
sceneRuntime,
|
||||
m_legacyGizmo);
|
||||
m_transformGizmo);
|
||||
}
|
||||
continue;
|
||||
}
|
||||
@@ -247,7 +247,7 @@ void SceneViewportController::Update(
|
||||
|
||||
const bool usingViewMoveTool = IsViewMoveTool(sceneRuntime.GetToolMode());
|
||||
|
||||
if (!m_legacyGizmo.IsActive()) {
|
||||
if (!m_transformGizmo.IsActive()) {
|
||||
for (const auto& transition : inputFrame.pointerButtonTransitions) {
|
||||
if (!transition.pressed ||
|
||||
!ContainsPoint(slotLayout.inputRect, transition.screenPosition) ||
|
||||
@@ -289,34 +289,34 @@ void SceneViewportController::Update(
|
||||
!m_navigationState.lookDragging &&
|
||||
!m_navigationState.panDragging;
|
||||
|
||||
if (!m_legacyGizmo.IsActive() &&
|
||||
if (!m_transformGizmo.IsActive() &&
|
||||
!toolOverlayInteractionActive &&
|
||||
inputFrame.focused &&
|
||||
!m_navigationState.lookDragging &&
|
||||
!m_navigationState.panDragging) {
|
||||
SceneToolMode shortcutMode = SceneToolMode::View;
|
||||
if (TryResolveToolModeShortcut(inputFrame, shortcutMode)) {
|
||||
ApplySceneToolMode(shortcutMode, sceneRuntime, m_legacyGizmo);
|
||||
ApplySceneToolMode(shortcutMode, sceneRuntime, m_transformGizmo);
|
||||
}
|
||||
}
|
||||
|
||||
if (inputFrame.focused &&
|
||||
!m_legacyGizmo.IsActive() &&
|
||||
!m_transformGizmo.IsActive() &&
|
||||
WasKeyPressed(inputFrame, KeyCode::F)) {
|
||||
sceneRuntime.FocusSceneSelection();
|
||||
}
|
||||
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
viewportHoverEligible);
|
||||
sceneRuntime.SetHoveredToolHandle(SceneToolHandle::None);
|
||||
|
||||
if (m_legacyGizmo.IsActive()) {
|
||||
if (m_transformGizmo.IsActive()) {
|
||||
if (WasKeyPressed(inputFrame, KeyCode::Escape)) {
|
||||
m_legacyGizmo.CancelDrag(sceneRuntime);
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.CancelDrag(sceneRuntime);
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
@@ -325,8 +325,8 @@ void SceneViewportController::Update(
|
||||
}
|
||||
|
||||
if (!leftMouseDown) {
|
||||
m_legacyGizmo.EndDrag(sceneRuntime);
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.EndDrag(sceneRuntime);
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
@@ -334,8 +334,8 @@ void SceneViewportController::Update(
|
||||
return;
|
||||
}
|
||||
|
||||
m_legacyGizmo.UpdateDrag(sceneRuntime);
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.UpdateDrag(sceneRuntime);
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
@@ -352,15 +352,15 @@ void SceneViewportController::Update(
|
||||
continue;
|
||||
}
|
||||
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
transition.screenPosition,
|
||||
true);
|
||||
if (m_legacyGizmo.IsHoveringHandle() &&
|
||||
m_legacyGizmo.TryBeginDrag(sceneRuntime)) {
|
||||
if (m_transformGizmo.IsHoveringHandle() &&
|
||||
m_transformGizmo.TryBeginDrag(sceneRuntime)) {
|
||||
m_navigationState = {};
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
@@ -369,7 +369,7 @@ void SceneViewportController::Update(
|
||||
}
|
||||
|
||||
const ViewportObjectIdPickResult pickResult =
|
||||
viewportHostService.PickSceneViewportObject(
|
||||
viewportObjectPicker.PickObject(
|
||||
viewportFrame->viewportShellFrame.requestedViewportSize,
|
||||
transition.localPointerPosition);
|
||||
if (pickResult.status == ViewportObjectIdPickStatus::Success) {
|
||||
@@ -380,7 +380,7 @@ void SceneViewportController::Update(
|
||||
}
|
||||
}
|
||||
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
@@ -420,7 +420,7 @@ void SceneViewportController::Update(
|
||||
|
||||
if (HasCameraInput(input)) {
|
||||
sceneRuntime.ApplySceneViewportCameraInput(input);
|
||||
m_legacyGizmo.Refresh(
|
||||
m_transformGizmo.Refresh(
|
||||
sceneRuntime,
|
||||
slotLayout.inputRect,
|
||||
pointerScreen,
|
||||
@@ -429,7 +429,7 @@ void SceneViewportController::Update(
|
||||
}
|
||||
|
||||
void SceneViewportController::Append(::XCEngine::UI::UIDrawList& drawList) const {
|
||||
AppendLegacySceneViewportGizmo(drawList, m_legacyGizmo.GetFrame());
|
||||
AppendSceneViewportTransformGizmo(drawList, m_transformGizmo.GetFrame());
|
||||
AppendSceneViewportToolOverlay(drawList, m_toolOverlay.GetFrame());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user