Refactor new editor state ownership model
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
|
||||
#include "Rendering/Viewport/ViewportHostService.h"
|
||||
#include "Scene/EditorSceneRuntime.h"
|
||||
#include "State/EditorCommandFocusService.h"
|
||||
|
||||
#include "Composition/EditorPanelIds.h"
|
||||
#include <XCEditor/Viewport/UIEditorViewportInputBridge.h>
|
||||
@@ -134,6 +135,11 @@ void SceneViewportController::ResetInteractionState() {
|
||||
m_legacyGizmo.ResetVisualState();
|
||||
}
|
||||
|
||||
void SceneViewportController::SetCommandFocusService(
|
||||
EditorCommandFocusService* commandFocusService) {
|
||||
m_commandFocusService = commandFocusService;
|
||||
}
|
||||
|
||||
void SceneViewportController::Update(
|
||||
EditorSceneRuntime& sceneRuntime,
|
||||
ViewportHostService& viewportHostService,
|
||||
@@ -168,6 +174,18 @@ void SceneViewportController::Update(
|
||||
? inputState.lastScreenPointerPosition
|
||||
: inputFrame.screenPointerPosition;
|
||||
|
||||
if (m_commandFocusService != nullptr &&
|
||||
(inputFrame.focused ||
|
||||
std::any_of(
|
||||
inputFrame.pointerButtonTransitions.begin(),
|
||||
inputFrame.pointerButtonTransitions.end(),
|
||||
[&](const auto& transition) {
|
||||
return transition.pressed &&
|
||||
ContainsPoint(slotLayout.inputRect, transition.screenPosition);
|
||||
}))) {
|
||||
m_commandFocusService->ClaimFocus(EditorActionRoute::Scene);
|
||||
}
|
||||
|
||||
if (inputFrame.focusLost) {
|
||||
m_navigationState = {};
|
||||
m_hoveredToolOverlayIndex = kSceneViewportToolOverlayInvalidIndex;
|
||||
|
||||
Reference in New Issue
Block a user