Clean up directional shadow integration test debug scaffolding
This commit is contained in:
@@ -1,223 +0,0 @@
|
||||
# SceneViewport Overlay/Gizmo Rework Checkpoint
|
||||
|
||||
## Update 2026-04-04 Phase 5G
|
||||
|
||||
### Chrome/Focus/Presentation Shell Formalization Completed
|
||||
|
||||
- Added `SceneViewportChrome.{h,cpp}` to take over the remaining scene viewport chrome responsibilities:
|
||||
- top toolbar rendering
|
||||
- in-viewport tool overlay rendering
|
||||
- unified tool-change command building and execution
|
||||
- Extended `SceneViewportInteractionFrame.h` with explicit helpers for:
|
||||
- post-interaction viewport focus decisions
|
||||
- final scene viewport presentation refresh and HUD draw
|
||||
- `SceneViewPanel` no longer owns inline scene toolbar/tool overlay rendering, ad-hoc tool switching glue, focus heuristics, or the final gizmo refresh/HUD presentation tail path.
|
||||
- Added focused editor tests covering tool-command composition/execution and the new focus/presentation helpers.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportChromeTest.*:SceneViewportNavigationTest.*:SceneViewportInteractionFrameTest.*:SceneViewportInteractionActionsTest.*:SceneViewportInteractionResolverTest.*:SceneViewportTransformGizmoCoordinatorTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-04 Phase 5F
|
||||
|
||||
### Interaction Frame/Request Glue Formalization Completed
|
||||
|
||||
- Added `SceneViewportInteractionFrame.h` to formalize:
|
||||
- scene viewport tool visibility/state derivation
|
||||
- frame geometry derivation from viewport rect and mouse position
|
||||
- per-frame interaction/gizmo context assembly
|
||||
- interaction resolve request construction
|
||||
- `SceneViewPanel` no longer assembles tool visibility booleans, local mouse coordinates, overlay frame references, or interaction resolve requests inline.
|
||||
- The panel now consumes `SceneViewportToolState`, `SceneViewportFrameGeometry`, and `SceneViewportInteractionFrameState` instead of stitching together those frame-level inputs itself.
|
||||
- Added focused editor tests covering tool-state mapping, frame geometry, interaction frame state, and resolve request assembly.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportNavigationTest.*:SceneViewportInteractionFrameTest.*:SceneViewportInteractionActionsTest.*:SceneViewportInteractionResolverTest.*:SceneViewportTransformGizmoCoordinatorTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-04 Phase 5E
|
||||
|
||||
### Navigation/Input State Formalization Completed
|
||||
|
||||
- Added `SceneViewportEditorModes.h` to move shared scene viewport editor mode enums out of `SceneViewPanel.h`.
|
||||
- Added `SceneViewportNavigation.h` as the formal navigation/input helper layer for:
|
||||
- tool shortcut resolution
|
||||
- look/pan drag state transitions
|
||||
- mouse/keyboard capture requests
|
||||
- `SceneViewportInput` assembly
|
||||
- interaction-resolution gating
|
||||
- `SceneViewPanel` now owns one `SceneViewportNavigationState` instead of multiple raw drag booleans and no longer assembles scene viewport input inline.
|
||||
- Removed the dead `m_loggedLookDelta` / `m_loggedPanDelta` panel state that no longer influenced runtime behavior.
|
||||
- Added focused editor tests for shortcut mapping, drag transitions, capture flags, input assembly, and interaction gating.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportNavigationTest.*:SceneViewportInteractionActionsTest.*:SceneViewportInteractionResolverTest.*:SceneViewportTransformGizmoCoordinatorTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-04 Phase 5D
|
||||
|
||||
### Stage-Oriented Gizmo Frame API Completed
|
||||
|
||||
- Extended `SceneViewportTransformGizmoCoordinator.{h,cpp}` with formal frame options, refresh requests, frame updates, and refresh-and-submit helpers.
|
||||
- `SceneViewPanel` no longer directly assembles the large `RefreshSceneViewportTransformGizmos(...)` argument list for interaction and draw stages.
|
||||
- The required dual-stage gizmo timing remains intact, but the stage orchestration now flows through `BuildSceneViewportTransformGizmoRefreshRequest(...)` and `RefreshAndSubmitSceneViewportTransformGizmoFrame(...)`.
|
||||
- Added coordinator tests covering frame option/request construction and refresh-to-submit flow.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportInteractionActionsTest.*:SceneViewportInteractionResolverTest.*:SceneViewportTransformGizmoCoordinatorTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-04 Phase 5C
|
||||
|
||||
### Transform Gizmo Coordinator Completed
|
||||
|
||||
- Added `SceneViewportTransformGizmoCoordinator.{h,cpp}` to formalize transform gizmo overlay submission and drag lifecycle dispatch.
|
||||
- `SceneViewPanel` no longer assembles transform gizmo overlay state inline or manually switches between `TryBeginDrag(...)`, `UpdateDrag(...)`, and `EndDrag(...)`.
|
||||
- Overlay submission now flows through `BuildSceneViewportTransformGizmoOverlaySubmission(...)` and `SubmitSceneViewportTransformGizmoOverlaySubmission(...)`.
|
||||
- Drag lifecycle intent now flows through explicit lifecycle commands, keeping the existing interaction timing unchanged while shrinking panel-owned orchestration.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportInteractionActionsTest.*:SceneViewportInteractionResolverTest.*:SceneViewportTransformGizmoCoordinatorTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-04 Phase 5B
|
||||
|
||||
### Interaction Actions Completed
|
||||
|
||||
- Added `SceneViewportInteractionActions.{h,cpp}` to formalize viewport-side hover state application and click action derivation.
|
||||
- `SceneViewPanel` no longer assembles orientation click, scene icon click, scene pick fallback, or hovered gizmo handle state inline.
|
||||
- Selection and orientation side effects now flow through `DispatchSceneViewportInteractionActions(...)`.
|
||||
- The panel keeps navigation and active gizmo drag ownership; interaction semantics are now authored in the viewport module.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportInteractionActionsTest.*:SceneViewportInteractionResolverTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-03 Phase 5A
|
||||
|
||||
### Interaction Resolver Completed
|
||||
|
||||
- Added `SceneViewportInteractionResolver.{h,cpp}` as the formal viewport-side interaction arbitration module.
|
||||
- `SceneViewPanel` no longer owns overlay handle priority rules or HUD/world interaction winner selection.
|
||||
- Overlay handle hit testing and HUD hit testing are now composed behind one resolver entry point.
|
||||
- The panel now consumes a resolved interaction result instead of stitching together multiple hit systems inline.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportInteractionResolverTest.*:SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
## Update 2026-04-03
|
||||
|
||||
### Phase 4 Completed
|
||||
|
||||
- Formalized a dedicated HUD overlay API via `SceneViewportHudOverlay.{h,cpp}`.
|
||||
- `SceneViewPanel` no longer calls the orientation gizmo draw/hit helpers directly.
|
||||
- HUD hit testing now flows through `HitTestSceneViewportHudOverlay(...)`.
|
||||
- World overlay remains on the formal overlay/pass path; HUD stays on the ImGui/UI path.
|
||||
- Removed the legacy `SceneViewportOverlayRenderer.*` shim.
|
||||
|
||||
### Verification
|
||||
|
||||
- `cmake --build build --config Debug --target editor_tests -- /p:BuildProjectReferences=false`
|
||||
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=SceneViewportOverlayRenderer_Test.*:SceneViewportOverlayProviderRegistryTest.*:ViewportRenderFlowUtilsTest.*`
|
||||
- `cmake --build build --config Debug --target XCEditor`
|
||||
|
||||
All commands completed successfully in `Debug`.
|
||||
|
||||
### Next Step
|
||||
|
||||
- Continue Phase 5 cleanup: keep shrinking residual viewport/UI glue in `SceneViewPanel` and formalize remaining editor-only overlay/resource entry points behind dedicated services/providers.
|
||||
|
||||
日期:`2026-04-02`
|
||||
|
||||
## 本轮完成
|
||||
|
||||
- `ViewportHostService` 已持有并缓存 scene viewport 的 canonical `SceneViewportOverlayFrameData`
|
||||
- `SceneViewPanel` 不再自己重复构建 scene editor overlay frame data,而是统一从 host service 取
|
||||
- `scene icon` 已接入 `handleRecords`
|
||||
- 新增 `SceneViewportOverlayHitTester.h`,scene icon 的 hover/click 已改为基于 canonical overlay handle 命中
|
||||
- `SceneViewportEditorOverlayData.h` 已扩展为通用 handle record 结构,支持优先级与多种命中形状
|
||||
- 新增 `SceneViewportOverlayHandleBuilder.h`,开始把 move/rotate/scale gizmo 的 draw data 转成 canonical handle records
|
||||
- `SceneViewPanel.cpp` 已改为通过统一 `HitTestSceneViewportOverlayHandles(...)` 解析 transform gizmo 的 hover / click-begin
|
||||
- `SceneViewportEditorOverlayPass` 已新增 screen-space triangle primitive 支持,可直接绘制 transform gizmo 的屏幕空间几何
|
||||
- `ViewportHostService` 已开始在 host 侧构建 transient transform gizmo overlay frame data,`SceneViewPanel.cpp` 只提交 overlay 与 gizmo handle build inputs
|
||||
- transform gizmo 的 handle build inputs 组装 helper 已从 `SceneViewPanel.cpp` 挪到 `SceneViewportOverlayHandleBuilder.h`
|
||||
- `transform gizmo` 的 selection/context/refresh/cancel helper 已从 `SceneViewPanel.cpp` 挪到 `SceneViewportTransformGizmoFrameBuilder.h`
|
||||
- move / rotate / scale gizmo 已不再直接依赖 `DrawSceneViewportOverlay()` 的 ImGui world draw 分支出图
|
||||
- `SceneViewportOverlayRenderer.cpp` 中旧的 gizmo / scene icon / scene line ImGui 绘制逻辑已删除,当前只保留 HUD 类 overlay
|
||||
- `SceneViewPanel.cpp` 中旧的 scene icon 临时命中逻辑已删除
|
||||
- `SceneViewPanel.cpp` 中旧的 gizmo 直接 hit test 入口已从 hover / click-begin 仲裁链上移除
|
||||
- `SceneViewPanel.cpp` 中已经失效的 camera/light world overlay 组装辅助函数已删除,避免 panel 继续承担 world overlay 构建职责
|
||||
- `SceneViewPanel.cpp` 中交互前命中与交互后绘制的 transform gizmo 刷新链路已收敛到同一套 helper,减少重复的 context/update/submit 逻辑
|
||||
- `GetSceneViewInteractionOverlayFrameData(...)` 已改为由 host 按传入的 transform gizmo inputs 现场组合交互 frame,`SceneViewPanel` 不再为命中阶段先写入 transient overlay 缓存
|
||||
- `ViewportHostService` 已改为缓存 transient transform gizmo 的原始 overlay + inputs,并在 render 阶段现场构建 frame data;panel 不再驱动这部分 frame data 的即时生成
|
||||
|
||||
## 当前状态
|
||||
|
||||
- `camera frustum`
|
||||
- `directional light gizmo`
|
||||
- `camera/light scene icon`
|
||||
|
||||
上述内容的绘制数据已经在 overlay builder / overlay frame data 路径上。
|
||||
|
||||
`scene icon` 与 `transform gizmo` 的 hover / click-begin 已经开始走统一 handle 数据。
|
||||
|
||||
目前 `transform gizmo` 尚未完全收口的部分主要是:
|
||||
|
||||
- move gizmo
|
||||
- rotate gizmo
|
||||
- scale gizmo
|
||||
|
||||
它们的 draw data / drag solver 仍然各自保留,且 draw data 仍然由 `SceneViewPanel` 驱动生成。
|
||||
|
||||
另外,`SceneViewPanel` 目前仍要控制 transform gizmo 的最终绘制提交时机;这说明绘制与命中都已经开始收口,但 transform gizmo 还没有完全并入单帧单份的 canonical overlay 数据,也还没有把 draw-state 提交流程完全下沉到 host。
|
||||
|
||||
## 本轮验证
|
||||
|
||||
以下翻译单元已在 `Debug` 下单独编译通过:
|
||||
|
||||
- `editor/src/panels/SceneViewPanel.cpp`
|
||||
- `editor/src/Viewport/SceneViewportTransformGizmoFrameBuilder.h`
|
||||
- `editor/src/Viewport/SceneViewportOverlayBuilder.cpp`
|
||||
- `editor/src/Viewport/Passes/SceneViewportEditorOverlayPass.cpp`
|
||||
- `editor/src/Application.cpp`
|
||||
|
||||
完整 `XCEditor` 整体编译当前仍被与本轮任务无关的 `engine/src/Resources/Shader/ShaderLoader.cpp` 缺失阻塞,因此本轮没有做整包通过确认。
|
||||
|
||||
## 下一步建议
|
||||
|
||||
下一小步应继续沿着统一 handle 数据收口,但先不要动 gizmo drag solver:
|
||||
|
||||
1. 继续把 transform gizmo 的最终绘制提交时机从 `SceneViewPanel` 往 host / canonical builder 收口,减少 panel 对 render-frame orchestration 的直接控制
|
||||
2. 在不改 drag solver 的前提下,把 transform gizmo 的最终 draw-state 提交流程也继续从 `SceneViewPanel` 往 host 下沉,让 panel 只消费统一命中结果和少量 gizmo state
|
||||
3. 等 transform gizmo 的提交/组装职责继续下沉后,再收最后一层 drag begin 之后的求解入口
|
||||
|
||||
目标是先统一“点中了谁”,再统一“如何拖动”。
|
||||
Reference in New Issue
Block a user