Refactor material inspector state IO

This commit is contained in:
2026-04-08 00:00:41 +08:00
parent 6289777c8e
commit 69cb80ccd4
9 changed files with 1458 additions and 769 deletions

View File

@@ -522,3 +522,46 @@ Material 面板不应再次演化成随意堆字段的临时入口。所有 rend
- 更完整的属性类型/显示策略覆盖
因此Phase 4 的性质是“先把 authoring 语义做正确”,为最后的测试与收口创造条件。
## 15. Phase 5 执行结果
状态:已完成
本阶段重点不是继续扩材质面板功能,而是把已经形成的正式链路变成“可持续回归验证”的状态,并把测试面收口到 Inspector 实际依赖的核心逻辑上。
### 15.1 已完成内容
- 新增 `MaterialInspectorMaterialState` / `MaterialInspectorMaterialStateIO` 辅助模块,承载:
- Material Inspector 状态结构
- source authored presence 解析
- Shader 切换时的属性/关键词重同步
- 材质源文件序列化文本生成
- 新增 `tests/editor/test_material_inspector_material_state_io.cpp`,覆盖:
- authored 属性/纹理/关键词标记识别
- Shader 切换时保留兼容 override、清理陈旧字段
- 非 authored 默认值不写回源文件
- 纹理 override 与 render state override 的正式序列化
- `editor_tests` 构建链路已接入上述 helper 与新测试文件。
### 15.2 已执行验证
- `cmake --build build --config Debug --target XCEditor -j 8`
- `cmake --build build --config Debug --target editor_tests -- /v:minimal`
- `build/tests/Resources/Material/Debug/material_tests.exe`
- `build/tests/Core/Asset/Debug/asset_tests.exe`
- `build/tests/Editor/Debug/editor_tests.exe --gtest_filter=MaterialInspectorMaterialStateIOTest.*`
验证结果:
- `XCEditor` 编译通过
- `material_tests`61 / 61 通过
- `asset_tests`56 / 56 通过
- `MaterialInspectorMaterialStateIOTest`4 / 4 通过
### 15.3 当前剩余风险
- 全量 `editor_tests.exe` 在顺序执行 `EditorActionRoutingTest.*` 时仍存在既有的共享状态级别挂起现象。
- 该挂起并非本次新增的材质面板测试本身触发:
- 新增 `MaterialInspectorMaterialStateIOTest` 单独执行通过
- `EditorActionRoutingTest.PlayModeAllowsRuntimeSceneUndoRedoButKeepsSceneDocumentCommandsBlocked` 单独执行通过
- 因此,本阶段围绕 Material Inspector / Shader 属性面板的测试收口已经完成,但 Editor 其余历史测试链路仍需单独排查。