Refactor scene viewport state into local sessions

This commit is contained in:
2026-04-29 14:13:47 +08:00
parent da6f37dafe
commit 212d4016e0
16 changed files with 353 additions and 380 deletions

View File

@@ -3,6 +3,7 @@
#include "Scene/SceneViewportTransformGizmoSupport.h"
#include "Assets/EditorIconService.h"
#include "Scene/EditorSceneRuntime.h"
#include "Scene/SceneViewportSession.h"
#include <algorithm>
#include <utility>
@@ -27,10 +28,9 @@ bool ContainsPoint(const UIRect& rect, const UIPoint& point) {
}
SceneViewportGizmoSupport::SceneViewportOverlayData BuildOverlayData(
const EditorSceneRuntime& sceneRuntime) {
const SceneViewportSession& session) {
SceneViewportGizmoSupport::SceneViewportOverlayData overlay = {};
const EditorSceneCameraSnapshot snapshot =
sceneRuntime.BuildSceneViewCameraSnapshot();
const EditorSceneCameraSnapshot snapshot = session.BuildCameraSnapshot();
if (!snapshot.valid) {
return overlay;
}
@@ -88,7 +88,8 @@ void SceneViewportSceneOverlay::ResetFrame() {
}
void SceneViewportSceneOverlay::Refresh(
EditorSceneRuntime& sceneRuntime,
const EditorSceneRuntime& sceneRuntime,
const SceneViewportSession& session,
const UIRect& viewportRect) {
m_frame = {};
m_frame.clipRect = viewportRect;
@@ -100,7 +101,7 @@ void SceneViewportSceneOverlay::Refresh(
}
const SceneViewportGizmoSupport::SceneViewportOverlayData overlay =
BuildOverlayData(sceneRuntime);
BuildOverlayData(session);
if (!overlay.valid) {
return;
}