# SceneViewPanel **命名空间**: `XCEngine::Editor` **类型**: `class` **源文件**: `editor/src/panels/SceneViewPanel.h` **描述**: Scene 视口面板。它持有 Scene View 当前的工具模式、pivot 模式、空间模式、导航状态和三类 transform gizmo,并把 UI chrome、交互解析、导航输入与 viewport 宿主服务串成一条完整的编辑器视口链路。 ## 概述 `SceneViewPanel` 是当前 Scene View 的编排层,不直接持有 render target,也不直接构建底层 overlay pass。 它当前主要把下面这些 helper 串起来: - [ViewportPanelContent](../ViewportPanelContent/ViewportPanelContent.md) 请求 Scene viewport 纹理,并提供 hovered / focused / clicked 等面板表面状态。 - [SceneViewportChrome](../../Viewport/SceneViewportChrome/SceneViewportChrome.md) 处理顶部 toolbar、左侧工具按钮 overlay、工具快捷键折叠,以及工具切换前的 gizmo 取消逻辑。 - [SceneViewportEditorModes](../../Viewport/SceneViewportEditorModes/SceneViewportEditorModes.md) 提供 `tool / pivot / transform-space` 三组模式枚举。 - [SceneViewportInteractionFrame](../../Viewport/SceneViewportInteractionFrame/SceneViewportInteractionFrame.md) 把面板状态翻译成 `SceneViewportToolState`、`SceneViewportFrameGeometry`、`SceneViewportInteractionFrameState`、focus 决策与 presentation request。 - [SceneViewportNavigation](../../Viewport/SceneViewportNavigation/SceneViewportNavigation.md) 管理 look/pan 拖拽状态、工具快捷键、capture flags,以及 `SceneViewportInput` 组装。 - [SceneViewportTransformGizmoCoordinator](../../Viewport/SceneViewportTransformGizmoCoordinator/SceneViewportTransformGizmoCoordinator.md) 刷新并提交 gizmo overlay state,并驱动 begin / frame / end 生命周期命令。 - [SceneViewportInteractionResolver](../../Viewport/SceneViewportInteractionResolver/SceneViewportInteractionResolver.md) 统一 HUD 命中、overlay handle 命中和 scene pick 入口。 - [SceneViewportInteractionActions](../../Viewport/SceneViewportInteractionActions/SceneViewportInteractionActions.md) 把命中结果折叠成 hover / click action,并分发 orientation 对齐与 scene picking。 - [IViewportHostService](../../Viewport/IViewportHostService/IViewportHostService.md) 提供 Scene / Game 视口宿主服务、Scene View overlay 查询以及 editor camera 输入桥接。 ## 公开类型与方法 | 成员 | 说明 | |------|------| | [SceneViewportToolMode](../../Viewport/SceneViewportEditorModes/SceneViewportToolMode.md) | Scene View 当前工具模式。 | | [SceneViewportPivotMode](../../Viewport/SceneViewportEditorModes/SceneViewportPivotMode.md) | `Pivot / Center` 两种 pivot 模式。 | | [SceneViewportTransformSpaceMode](../../Viewport/SceneViewportEditorModes/SceneViewportTransformSpaceMode.md) | `Global / Local` 两种变换空间模式。 | | [SceneViewPanel()](Constructor.md) | 构造面板实例。 | | [Render](Render.md) | 渲染面板,并推进一整帧 Scene View 交互链。 | ## 当前成员语义 - `m_toolMode` 默认是 `SceneViewportToolMode::Move`,当前由 `SceneViewportChrome` 负责切换。 - `m_pivotMode` 默认是 `SceneViewportPivotMode::Pivot`,`m_transformSpaceMode` 默认是 `SceneViewportTransformSpaceMode::Global`。 - `m_navigationState` 记录 look drag、pan drag,以及当前 pan drag 使用的鼠标按键。 - `m_moveGizmo / m_rotateGizmo / m_scaleGizmo` 作为面板长生命周期成员跨帧保存交互状态,而不是每帧临时构造。 ## 当前边界 - `SceneViewPanel` 负责“交互编排”,不是 Scene / Game 视口的底层宿主。 - object-id picking、overlay frame data 缓存、render target 生命周期和 editor camera 状态都在 `ViewportHostService` 一侧。 - 它只服务于 Scene View,不参与 Game View 的运行时输入桥接。 ## 相关文档 - [Render](Render.md) - [Viewport](../../Viewport/Viewport.md) - [ViewportPanelContent](../ViewportPanelContent/ViewportPanelContent.md) - [SceneViewportChrome](../../Viewport/SceneViewportChrome/SceneViewportChrome.md) - [SceneViewportInteractionFrame](../../Viewport/SceneViewportInteractionFrame/SceneViewportInteractionFrame.md) - [SceneViewportNavigation](../../Viewport/SceneViewportNavigation/SceneViewportNavigation.md) - [SceneViewportTransformGizmoCoordinator](../../Viewport/SceneViewportTransformGizmoCoordinator/SceneViewportTransformGizmoCoordinator.md)