4.4 KiB
4.4 KiB
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 请求 Scene viewport 纹理,并提供 hovered / focused / clicked 等面板表面状态。
- SceneViewportChrome 处理顶部 toolbar、左侧工具按钮 overlay、工具快捷键折叠,以及工具切换前的 gizmo 取消逻辑。
- SceneViewportEditorModes
提供
tool / pivot / transform-space三组模式枚举。 - SceneViewportInteractionFrame
把面板状态翻译成
SceneViewportToolState、SceneViewportFrameGeometry、SceneViewportInteractionFrameState、focus 决策与 presentation request。 - SceneViewportNavigation
管理 look/pan 拖拽状态、工具快捷键、capture flags,以及
SceneViewportInput组装。 - SceneViewportTransformGizmoCoordinator 刷新并提交 gizmo overlay state,并驱动 begin / frame / end 生命周期命令。
- SceneViewportInteractionResolver 统一 HUD 命中、overlay handle 命中和 scene pick 入口。
- SceneViewportInteractionActions 把命中结果折叠成 hover / click action,并分发 orientation 对齐与 scene picking。
- IViewportHostService 提供 Scene / Game 视口宿主服务、Scene View overlay 查询以及 editor camera 输入桥接。
公开类型与方法
| 成员 | 说明 |
|---|---|
| SceneViewportToolMode | Scene View 当前工具模式。 |
| SceneViewportPivotMode | Pivot / Center 两种 pivot 模式。 |
| SceneViewportTransformSpaceMode | Global / Local 两种变换空间模式。 |
| SceneViewPanel() | 构造面板实例。 |
| Render | 渲染面板,并推进一整帧 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 的运行时输入桥接。