Introduce scene viewport overlay providers
This commit is contained in:
@@ -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 注入链路,需要下一阶段继续收口
|
||||
|
||||
Reference in New Issue
Block a user