Introduce scene viewport overlay providers

This commit is contained in:
2026-04-03 16:26:20 +08:00
parent 2b19b4bece
commit 052ac28aa3
10 changed files with 905 additions and 399 deletions

View File

@@ -1004,3 +1004,45 @@ ISceneViewportGizmoProvider
- 合并 `SceneViewportOverlayFrameData`
这一步完成后,当前 SceneView gizmo 系统才算真正进入“可持续扩展”的第二阶段。
---
## 13. 进度更新 2026-04-03 Phase 3A 已完成
本次已完成 `Phase 3A: Overlay Provider Registry 落地`,且已经通过代码、测试与 editor 编译验证。
已落地内容:
1. 新增 `SceneViewportOverlayBuildContext`
2. 新增 `ISceneViewportOverlayProvider`
3. 新增 `SceneViewportOverlayProviderRegistry`
4. 新增默认 provider
- `SceneViewportCameraOverlayProvider`
- `SceneViewportLightOverlayProvider`
5. `SceneViewportOverlayBuilder` 已从大单体逻辑改为 provider 聚合器
6. `ViewportHostService` 已改为持有 `SceneViewportOverlayBuilder` 实例,而不是依赖静态构建入口
本阶段行为保持不变的部分:
- `BuildSceneViewEditorOverlayContentSignature(...)` 未改
- `SceneViewPanel` 的 transient transform gizmo 注入链路未改
- orientation gizmo / HUD 分层未改
- grid / outline pass 未改
新增验证:
1. `SceneViewportOverlayProviderRegistryTest.AppendsProvidersInRegistrationOrder`
2. `SceneViewportOverlayProviderRegistryTest.CameraProviderBuildsSceneIconAndSelectedFrustum`
3. `SceneViewportOverlayProviderRegistryTest.LightProviderBuildsSceneIconAndSelectedDirectionalHelper`
4. `SceneViewportOverlayProviderRegistryTest.OverlayBuilderUsesDefaultRegistryToAggregateCameraAndLightProviders`
已执行验证:
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
- `cmake --build build --config Debug --target XCEditor`
阶段结论:
- Phase 3A 已完成并可作为后续 `Phase 3B: Transform Gizmo 并入正式 Provider 体系` 的稳定起点
- 当前 `camera/light overlay` 的职责边界已经从单体 builder 中抽离,但 `transform gizmo` 仍然保留在 transient 注入链路,需要下一阶段继续收口