Files
XCEngine/docs/used/API文档实时同步任务池_2026-04-03_第二轮归档.md

601 lines
34 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# API 文档实时同步任务池2026-04-03第二轮
## 文档定位
这份任务池现已归档,接替的是第一轮归档:
- `docs/used/API文档实时同步任务池_2026-04-03_第一轮归档.md`
第一轮已经解决的重点是:
- canonical 目录结构收口
- 历史缺页补齐
- 第一轮大规模内容重写
本轮重点不再是“补结构”,而是:
- 重新对照当前工作树源码与测试
- 清理最近重构后重新出现的内容级失配
- 继续维护一份适合多人并行认领的增量同步清单
## 当前复核快照
- 最近一次结构审计时间:`2026-04-03 16:21:55`
- 审计命令:`python -B docs/api/_tools/audit_api_docs.py`
- 当前结果:
- `Public headers: 244`
- `Editor source headers: 126`
- `Invalid header refs: 0`
- `Invalid source refs: 0`
- `Broken .md links: 0`
- `Stale canonical doc tokens: 0`
- `Stale editor doc tokens: 0`
- `Stale editor canonical pages: 0`
这说明当前结构层面已经恢复全绿;本轮已确认的内容级失配也已收口,后续以持续巡检为主。
## 认领规则
- 一次只认领 `1` 个任务块。
- 先把 `状态` 改成 `DOING`,再写 `认领人`
- 只能改自己任务块的 `写入范围`
- 所有改动都必须以“当前源码 + 当前测试 + 当前真实调用链”为依据,不允许按旧文档续写旧行为。
- 如果清理了过期 API 页面,必须同时清理交叉链接。
## 任务池
## T01 Editor / Viewport 渲染计划与宿主流程内容同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P0`
- 写入范围:
- `docs/api/XCEngine/Editor/Viewport/SceneViewportRenderPlan/**`
- `docs/api/XCEngine/Editor/Viewport/ViewportHostRenderFlowUtils/**`
- `docs/api/XCEngine/Editor/Viewport/ViewportHostService/**`
- 必要时 `docs/api/XCEngine/Editor/Viewport/IViewportHostService/**`
- 主要源码依据:
- `editor/src/Viewport/SceneViewportRenderPlan.h`
- `editor/src/Viewport/ViewportHostRenderFlowUtils.h`
- `editor/src/Viewport/ViewportHostService.h`
- `tests/editor/test_viewport_render_flow_utils.cpp`
- 已关闭问题:
- 旧文档仍把 Scene View 当前主路径写成 builtin post-process 主导
- 没写清 grid / selection outline 现在已转为显式 `postScenePasses`
- 没写清 overlay pass 是 `editorOverlayFrameData + transientOverlayFrameData` 合并后再创建
- 没写清 `Scene object id shader view is unavailable` 是局部降级警告,不是整帧失败
- 完成记录:
- 已重写 `SceneViewportRenderPlan.md``BuildSceneViewportRenderPlan.md``ApplySceneViewportRenderPlan.md`
- 已同步 `ViewportHostRenderFlowUtils.md``ViewportHostService.md``RenderRequestedViewports.md`
- 已清理 `IViewportHostService` 中残留的旧表述
## T02 Core / Asset 缓存接口改名与语义重构同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P0`
- 写入范围:
- `docs/api/XCEngine/Core/Asset/ResourceManager/**`
- `docs/api/XCEngine/Core/Asset/AssetImportService/**`
- `docs/api/XCEngine/Core/Asset/ProjectAssetIndex/**`
- 必要时 `docs/api/XCEngine/Core/Asset/Asset.md`
- 必要时 `docs/api/XCEngine/Core/Asset/ArtifactFormats/**`
- 主要源码依据:
- `engine/include/XCEngine/Core/Asset/ResourceManager.h`
- `engine/src/Core/Asset/ResourceManager.cpp`
- `engine/include/XCEngine/Core/Asset/AssetImportService.h`
- `engine/src/Core/Asset/AssetImportService.cpp`
- `engine/include/XCEngine/Core/Asset/ProjectAssetIndex.h`
- `engine/src/Core/Asset/ProjectAssetIndex.cpp`
- `tests/core/Asset/test_resource_manager.cpp`
- 已关闭问题:
- `RefreshAssetDatabase` 已经不存在,但旧文档仍在沿用
- `RefreshProjectAssets` / `RebuildProjectAssetCache` / `GetProjectLibraryRoot` 缺页或未写清
- `AssetImportService::EnsureArtifact()` 旧文档仍把输出写成 `ResolvedAsset`
- `BuildLookupSnapshot()` 旧文档仍按“双 map 出参”描述,而不是 `LookupSnapshot`
- `ImportedAsset::runtimeLoadPath` 语义未同步到上层文档
- 完成记录:
- 已删除过期页 `ResourceManager/RefreshAssetDatabase.md`
- 已补齐 `RefreshProjectAssets.md``RebuildProjectAssetCache.md``GetProjectLibraryRoot.md`
- 已补齐 `LookupSnapshot.md``ImportedAsset.md``GetLibraryRoot.md``RebuildLibraryCache.md`
- 已同步 `Asset.md``ArtifactFormats.md``ResourceManager/Load.md``runtimeLoadPath` 口径
## T03 Scripting / Mono 托管销毁入口同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Scripting/Mono/MonoScriptRuntime/**`
- 主要源码依据:
- `engine/include/XCEngine/Scripting/Mono/MonoScriptRuntime.h`
- `engine/src/Scripting/Mono/MonoScriptRuntime.cpp`
- `tests/scripting/test_mono_script_runtime.cpp`
- 已关闭问题:
- `DestroyManagedObject(MonoObject*)` 已进入头文件与测试,但文档树没有对应页面
- `MonoScriptRuntime.md` 没写清 `Object.Destroy(...)` 会回落到原生对象 / 组件销毁
- 完成记录:
- 已新增 `DestroyManagedObject.md`
- 已更新 `MonoScriptRuntime.md` 的 internal call 说明与方法总表
## T04 Cross-Module / 教程层与模块总览口径持续复核
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P2`
- 写入范围:
- `docs/api/_guides/**`
- `docs/api/XCEngine/*/*.md`
- 仅限与本轮已确认 API 变更直接相关的总览页
- 任务目标:
- 继续检查教程页、模块总览页是否仍在传播旧心智模型
- 尤其关注:
- Scene View 仍被写成 builtin post-process 主导
- 资源导入链仍被写成 `artifactMainPath` / `RefreshAssetDatabase` 时代的口径
- 托管对象销毁路径未在教程层被解释
- 产出要求:
- 只修正已确认失配的 guide / overview 页面
- 不做与当前源码无关的泛化扩写
- 完成记录:
- 已完成一轮 guide / overview 复核
- 已确认 `GameObject / Scene` 教程层仍在传播“tag 只是 name 别名”的旧心智
- 已把后续需要实改的页面收口到 `T08`
## T05 增量变更监控 / 新一轮差异发现
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P2`
- 写入范围:
- 只读检查 `engine/include/**``engine/src/**``editor/src/**``tests/**`
- 必要时只向本任务池追加新任务块
- 任务目标:
- 继续结合工作树最新改动,找出新的“源码已变但文档还没跟上”的内容级失配
- 优先检查:
- 最近改动过的 public headers
- 最近改动过的 Editor source headers
- 最近新增或更新过的测试
- 产出要求:
- 只记录已确认的问题
- 每条新任务都要写明:
- 受影响文档
- 主要源码依据
- 真实失配点
- 建议写入范围
- 完成记录:
- 已重新扫描当前工作树改动过的 public header、Editor source header、实现文件和测试
- 已确认并追加 `T08``T09` 两组新的内容级失配
## T06 Rendering / Camera request、Passes 与执行链旧口径清理
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Rendering/CameraRenderRequest/**`
- `docs/api/XCEngine/Rendering/CameraRenderer/**`
- `docs/api/XCEngine/Rendering/Passes/**`
- `docs/api/XCEngine/Rendering/ObjectIdPass/**`
- `docs/api/XCEngine/Rendering/RenderPipeline/**`
- `docs/api/XCEngine/Rendering/SceneRenderer/**`
- `docs/api/XCEngine/Editor/Viewport/SceneViewportRenderPlan/**`
- `docs/api/XCEngine/Editor/Viewport/Passes/**`
- 必要时 `docs/api/XCEngine/Editor/Viewport/Viewport.md`
- 必要时 `docs/api/XCEngine/XCEngine.md`
- 必要时 `docs/api/_tools/audit_api_docs.py`
- 主要源码依据:
- `engine/include/XCEngine/Rendering/CameraRenderRequest.h`
- `engine/include/XCEngine/Rendering/CameraRenderer.h`
- `engine/include/XCEngine/Rendering/Passes/BuiltinObjectIdPass.h`
- `engine/include/XCEngine/Rendering/Passes/BuiltinObjectIdOutlinePass.h`
- `engine/include/XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h`
- `engine/include/XCEngine/Rendering/ObjectIdPass.h`
- `engine/include/XCEngine/Rendering/RenderPipeline.h`
- `engine/include/XCEngine/Rendering/SceneRenderer.h`
- `engine/src/Rendering/CameraRenderer.cpp`
- `engine/src/Rendering/SceneRenderer.cpp`
- `tests/Rendering/unit/test_camera_scene_renderer.cpp`
- `editor/src/Viewport/SceneViewportRenderPlan.h`
- `editor/src/Viewport/Passes/SceneViewportGridPass.cpp`
- `editor/src/Viewport/Passes/SceneViewportSelectionOutlinePass.cpp`
- `editor/src/Viewport/ViewportHostRenderFlowUtils.h`
- `tests/Editor/test_viewport_render_flow_utils.cpp`
- `tests/Editor/test_scene_viewport_overlay_renderer.cpp`
- 已关闭问题:
- `CameraRenderRequest.md` 仍描述已删除的 `builtinPostProcess` 子请求
- 页面仍链接到不存在的 `BuiltinPostProcessRequest/BuiltinPostProcessRequest.md`
- Scene View 已改为通过 `postScenePasses` / `overlayPasses` 写回 request但该页口径未同步
- `CameraRenderer.md` 仍保留已删除的 `m_builtinPostProcessBuilder` 历史口径
- `Passes.md` 的典型链路只写了 `postScenePasses`,遗漏当前 `overlayPasses` 组装路径
- `Rendering/Passes` 下仍残留已删除的 `BuiltinPostProcessPassPlan` / `BuiltinPostProcessPassSequenceBuilder` 页面
- `BuiltinObjectIdPass``BuiltinInfiniteGridPass` 多个公开入口缺页
- `ObjectIdPass.md``RenderPipeline.md``SceneRenderer.md` 与顶层 `XCEngine.md` 仍在传播 builtin-post-process 心智模型
- 完成记录:
- 已重写 `CameraRenderRequest.md`
- 已清理 `2` 个失效 `.md` 链接
- 已同步 `CameraRenderer.md``Passes.md` 的当前执行链路表述
- 已删除 `BuiltinPostProcessPassPlan.md``BuiltinPostProcessPassSequenceBuilder.md`
- 已补齐 `BuiltinObjectIdPass` / `BuiltinInfiniteGridPass` 缺失页面,并补充 `SceneViewportRenderPlan` 下 grid / selection outline pass factory 页面
- 已新增 `SceneViewportGridPass` / `SceneViewportSelectionOutlinePass` 页面,并同步 `Editor/Viewport/Passes/Passes.md``Viewport.md` 的当前口径
- 已同步 `ObjectIdPass.md``RenderPipeline.md``SceneRenderer.md``XCEngine.md` 的当前口径
- 已补充 Rendering guide、`CameraRenderer::Render``ViewportHostService::RenderRequestedViewports` 的 request 级 pass 注入说明
- 已为 `builtinPostProcess` / `BuiltinPostProcessRequest` / `m_builtinPostProcessBuilder` 增加 canonical 过期符号审计
- 已复跑结构审计并确认 `Broken .md links: 0`
## T07 Editor / Core `EditorConsoleSink` 生命周期说明同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Editor/Core/EditorConsoleSink/**`
- 必要时 `docs/api/XCEngine/Editor/Managers/Managers.md`
- 必要时 `docs/api/_tools/audit_api_docs.py`
- 主要源码依据:
- `editor/src/Core/EditorConsoleSink.h`
- `editor/src/Core/EditorConsoleSink.cpp`
- `editor/src/panels/ConsolePanel.cpp`
- `editor/src/Core/EditorLoggingSetup.h`
- `tests/Editor/test_editor_console_sink.cpp`
- 已关闭问题:
- `EditorConsoleSink::GetInstance()` 旧文档仍把它写成会返回 fallback 实例
- 相关 overview 页面没有写清活动 sink 销毁后会返回 `nullptr`
- 审计脚本此前无法自动拦截这类旧生命周期表述
- 完成记录:
- 已同步 `EditorConsoleSink.md``GetInstance.md``Destructor.md`
- 已同步 `Managers.md` 中对控制台 sink 生命周期的引用口径
- 已为 `fallback 实例` 与“不会返回空指针”旧表述增加定向审计
## T08 Components / Scene / Scripting `GameObject` tag-layer 语义同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P0`
- 写入范围:
- `docs/api/XCEngine/Components/GameObject/**`
- `docs/api/XCEngine/Scene/Scene/**`
- `docs/api/XCEngine/Scripting/Mono/MonoScriptRuntime/**`
- 必要时 `docs/api/_guides/Components/GameObject-Component-Lifecycle-And-Serialization.md`
- 必要时 `docs/api/_guides/Scene/Scene-Lifecycle-And-Serialization.md`
- 主要源码依据:
- `engine/include/XCEngine/Components/GameObject.h`
- `engine/src/Components/GameObject.cpp`
- `engine/src/Scene/Scene.cpp`
- `engine/src/Scripting/Mono/MonoScriptRuntime.cpp`
- `managed/XCEngine.ScriptCore/GameObject.cs`
- `managed/XCEngine.ScriptCore/Component.cs`
- `managed/XCEngine.ScriptCore/InternalCalls.cs`
- `tests/Components/test_game_object.cpp`
- `tests/Scene/test_scene.cpp`
- `tests/scripting/test_mono_script_runtime.cpp`
- 已确认问题:
- `GameObject.md` 仍写“没有真正的 tag 系统”,并把 `FindGameObjectsWithTag()` 描述成按名字匹配;这与当前 `m_tag` / `CompareTag()` / `SetTag()` 实现已不符
- `Scene.md``FindGameObjectWithTag.md` 仍在传播“按名字查 tag”的旧口径
- `GameObject` 目录缺少 `GetTag.md``SetTag.md``CompareTag.md``GetLayer.md``SetLayer.md`
- `Serialize.md` / `Deserialize.md` 尚未同步 `tag=` 字段、默认 `Untagged` 以及 layer clamp 语义
- `MonoScriptRuntime` 总览页尚未解释 Unity 风格 `GameObject.tag` / `layer` / `CompareTag()` 已通过 internal call 暴露到托管侧
- 产出要求:
- 类型页与方法页都要明确区分当前原生实现、场景查询语义和托管暴露语义
- 教程页要从“tag 只是名字别名”改成“当前已有独立 tag 字段,但仍是轻量 Unity 风格模型”
- 需要写清:空 tag 会回落到 `Untagged`layer 会 clamp 到 `[0, 31]`
- 完成记录:
- 已重写 `GameObject.md``Scene.md``FindGameObjectWithTag.md`
- 已补齐 `GetTag.md``SetTag.md``CompareTag.md``GetLayer.md``SetLayer.md`
- 已同步 `Serialize.md` / `Deserialize.md``tag=``layer=``Untagged` 与 clamp 语义
- 已同步 `MonoScriptRuntime.md` 对托管 `GameObject.tag` / `layer` / `CompareTag()` 的 internal call 桥接说明
- 已同步 `GameObject-Component-Lifecycle-And-Serialization.md``Scene-Lifecycle-And-Serialization.md` 的心智模型口径
- 已补充 `Constructor``AddComponent``SetActive``SetParent``IsActive``IsActiveInHierarchy``Find``FindObjectsOfType``Awake``Start``Update``FixedUpdate``LateUpdate``OnDestroy``Destroy` 的真实生命周期与查询语义
## T09 Resources / Material 与材质 Artifact v2 语义同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P0`
- 写入范围:
- `docs/api/XCEngine/Resources/Material/**`
- `docs/api/XCEngine/Core/Asset/ArtifactFormats/**`
- `docs/api/XCEngine/Core/Asset/AssetDatabase/**`
- 必要时 `docs/api/XCEngine/Core/Asset/Asset.md`
- 主要源码依据:
- `engine/include/XCEngine/Resources/Material/Material.h`
- `engine/src/Resources/Material/Material.cpp`
- `engine/src/Resources/Material/MaterialLoader.cpp`
- `engine/include/XCEngine/Core/Asset/ArtifactFormats.h`
- `engine/src/Core/Asset/AssetDatabase.cpp`
- `tests/Resources/Material/test_material.cpp`
- `tests/Resources/Material/test_material_loader.cpp`
- 已确认问题:
- `Resources/Material/Material.md` 仍是旧模板式总览,没有覆盖当前公开语义
- `Material` 目录缺少 `SetTextureAssetRef.md``GetTextureBindingAssetRef.md``GetTextureBindingLoadedTexture.md`
- `ArtifactFormats.md` 仍写 `kMaterialArtifactSchemaVersion = 1`、magic `XCMAT01`,与当前 schema v2 / `XCMAT02` 不符
- 材质 artifact 文档还没写清每个 texture binding 现在会序列化“编码后的 `AssetRef` + 可选 artifact/path 字符串”
- `Material` 文档尚未解释纹理绑定现在既有 loaded handle也有稳定 `AssetRef` 元数据,并且 `GetTexture()` 可在首次访问时通过 `TryResolveAssetPath()` 兑现延迟资源
- 产出要求:
- 重写 `Material.md`,把 shader 属性、texture binding 元数据、lazy resolve、路径与 `AssetRef` 的边界写清
- 为新增公开方法补页,并把现有 `SetTexture` / `GetTexture` / `GetTextureBindingCount` 等页面更新到当前实现
- 更新 `ArtifactFormats.md``AssetDatabase` 相关页面,写清材质 artifact v2 的字段顺序、兼容边界和设计动机
- 完成记录:
- 已重写 `docs/api/XCEngine/Resources/Material/Material.md``docs/api/XCEngine/Resources/Material/Material/Material.md`
- 已新增 `SetTextureAssetRef.md``SetTexturePath.md``GetTextureBindingName.md``GetTextureBindingAssetRef.md``GetTextureBindingPath.md``GetTextureBindingLoadedTexture.md``GetTextureBindingTexture.md`
- 已同步 `SetTexture.md``GetTexture.md``GetTextureBindingCount.md` 的当前 lazy-load 与 binding metadata 语义
- 已更新 `ArtifactFormats.md`,把材质 artifact 修正到 schema v2 / `XCMAT02`,并写清 texture binding 三元组布局
- 已更新 `AssetDatabase.md` 的当前 importerVersion 常量,并在 `Asset.md` 补充 `.xcmat` v2 的跨模块说明
- 已为旧 `kMaterialArtifactSchemaVersion = 1` / `XCMAT01` 文案增加审计回归保护
- 已复跑结构审计并确认 `Broken .md links: 0`
## T10 Editor / Viewport `SceneViewportShaderPaths` canonical 补页
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Editor/Viewport/SceneViewportShaderPaths/**`
- 必要时 `docs/api/XCEngine/Editor/Viewport/Viewport.md`
- 主要源码依据:
- `editor/src/Viewport/SceneViewportShaderPaths.h`
- `editor/src/Viewport/Passes/SceneViewportGridPass.cpp`
- `editor/src/Viewport/Passes/SceneViewportSelectionOutlinePass.cpp`
- 已关闭问题:
- `editor/src/Viewport/SceneViewportShaderPaths.h` 新进入工作树后还没有 canonical 页面
- 结构审计一度出现 `Editor source headers: 125``Valid source refs (Editor canonical): 124`
- 完成记录:
- 已新增 `SceneViewportShaderPaths.md` 与 5 个 helper/function 页面
- 已同步 `Viewport.md` 的目录结构总览
- 已复跑结构审计并确认 `Valid source refs (Editor canonical): 125`
## T11 Platform / 概述页与方法页模板化表述清理
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Platform/**`
- 主要源码依据:
- `engine/include/XCEngine/Platform/GameTime.h`
- `engine/include/XCEngine/Platform/PlatformTypes.h`
- `engine/include/XCEngine/Platform/IClock.h`
- `engine/include/XCEngine/Platform/IWindow.h`
- `engine/include/XCEngine/Platform/IFileSystem.h`
- `engine/include/XCEngine/Platform/IPlatform.h`
- `engine/include/XCEngine/Platform/IDynamicLibrary.h`
- `engine/include/XCEngine/Platform/IDisplayEnumerator.h`
- `engine/include/XCEngine/Platform/Window.h`
- `engine/include/XCEngine/Platform/Windows/WindowsWindow.h`
- `engine/include/XCEngine/Platform/Windows/WindowsInputModule.h`
- `engine/src/Platform/Window.cpp`
- `engine/src/Platform/Windows/WindowsWindow.cpp`
- `engine/src/Platform/Windows/WindowsInputModule.cpp`
- 已关闭问题:
- `Platform` 下多组概述页仍把自己写成“canonical 总览”,没有说明符号本身的职责和边界
- 大量方法页仍残留“获取相关状态或对象”“公开方法,详见头文件声明”“参数语义详见头文件声明”等模板废话
- `WindowsInputModule::PumpEvents()` 当前是空实现,但旧页没有说明,容易误导成真实消息泵入口
- `WindowsWindow` 的 Win32 当前实现路径没有写清,例如 `Create()``Destroy()``PumpEvents()``SetFullscreen()``ShouldClose()`
- 完成记录:
- 已重写 `GameTime``PlatformTypes``IClock``IWindow``IFileSystem``IPlatform``IDynamicLibrary``IDisplayEnumerator``Window``WindowsWindow``WindowsInputModule` 相关 overview 与方法页
- 已把 `Platform` 下残留模板短语、参数占位语和 canonical 占位说明清理到 `0`
- 已写清 `Window` / `WindowsWindow` / `WindowsInputModule` 的当前实现语义与输入桥接关系
- 已复跑结构审计并确认 `Old template pages: 0``Broken .md links: 0`
## T12 Cross-Module / canonical 式概述废话清理
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/RHI/D3D12/**`
- `docs/api/XCEngine/Resources/**`
- 主要源码依据:
- `engine/include/XCEngine/RHI/D3D12/D3D12Types.h`
- `engine/include/XCEngine/RHI/D3D12/D3D12Common.h`
- `engine/include/XCEngine/RHI/D3D12/D3D12Enums.h`
- `engine/include/XCEngine/RHI/D3D12/D3D12RootSignature.h`
- `engine/include/XCEngine/RHI/D3D12/D3D12PipelineState.h`
- `engine/include/XCEngine/Resources/Resources.h`
- `engine/include/XCEngine/Resources/Texture/Texture.h`
- `engine/include/XCEngine/Resources/Texture/TextureLoader.h`
- `engine/include/XCEngine/Resources/Texture/TextureImportSettings.h`
- `engine/include/XCEngine/Resources/Mesh/Mesh.h`
- `engine/include/XCEngine/Resources/Mesh/MeshLoader.h`
- `engine/include/XCEngine/Resources/Mesh/MeshImportSettings.h`
- `engine/include/XCEngine/Resources/Shader/Shader.h`
- `engine/include/XCEngine/Resources/Shader/ShaderLoader.h`
- `engine/include/XCEngine/Resources/AudioClip/AudioClip.h`
- `engine/include/XCEngine/Resources/AudioClip/AudioLoader.h`
- 已关闭问题:
- `RHI/D3D12``Resources` 下仍有一批 overview 页把“概述”写成“当前页面作为平行目录中的 canonical 总览”,没有解释符号本身做什么
- `Texture``Mesh``Shader``AudioClip` 等资源类型页没有把类型边界、持有的数据和辅助声明写清
- `D3D12Types``D3D12Common``D3D12Enums` 这类 helper header 页没有说明它们是转换 / 构造 / 检查函数集合
- 完成记录:
- 已重写 `RHI/D3D12``Resources` 下全部 `16` 个 canonical 式 overview 页
- 已把全仓库 `docs/api/XCEngine/**` 中“当前页面作为平行目录中的 canonical 总览”这类概述废话清理到 `0`
- 已复跑结构审计并确认 `Broken .md links: 0``Old template pages: 0`
## T13 Components / `GameObject` 剩余辅助页内容化补齐
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P2`
- 写入范围:
- `docs/api/XCEngine/Components/GameObject/DetachChildren.md`
- `docs/api/XCEngine/Components/GameObject/DetachFromParent.md`
- `docs/api/XCEngine/Components/GameObject/Destructor.md`
- `docs/api/XCEngine/Components/GameObject/GetChild.md`
- `docs/api/XCEngine/Components/GameObject/GetChildCount.md`
- `docs/api/XCEngine/Components/GameObject/GetChildren.md`
- `docs/api/XCEngine/Components/GameObject/GetComponent.md`
- `docs/api/XCEngine/Components/GameObject/GetComponentInChildren.md`
- `docs/api/XCEngine/Components/GameObject/GetComponentInParent.md`
- `docs/api/XCEngine/Components/GameObject/GetComponents.md`
- `docs/api/XCEngine/Components/GameObject/GetComponentsInChildren.md`
- `docs/api/XCEngine/Components/GameObject/GetID.md`
- `docs/api/XCEngine/Components/GameObject/GetName.md`
- `docs/api/XCEngine/Components/GameObject/GetParent.md`
- `docs/api/XCEngine/Components/GameObject/GetScene.md`
- `docs/api/XCEngine/Components/GameObject/GetTransform.md`
- `docs/api/XCEngine/Components/GameObject/GetUUID.md`
- `docs/api/XCEngine/Components/GameObject/RemoveComponent.md`
- `docs/api/XCEngine/Components/GameObject/SetName.md`
- 主要源码依据:
- `engine/include/XCEngine/Components/GameObject.h`
- `engine/src/Components/GameObject.cpp`
- `tests/Components/test_game_object.cpp`
- `tests/Scene/test_scene.cpp`
- `tests/scripting/test_mono_script_runtime.cpp`
- 已关闭问题:
- `GameObject` 模块的核心生命周期、tag/layer 与场景边界已经完成,但上述辅助页仍残留模板式表述
- 这些页面尚未写清模板接口的真实语义,例如 `Transform` 特例、层级递归查询、观察指针返回与移除边界
- 产出要求:
- 把这些方法页全部改成基于当前源码的行为说明
- 优先写清组件查询模板、层级辅助接口和对象身份访问器的真实边界
- 不重复改动本轮已经完成内容化的生命周期和 tag/layer 页面
- 完成记录:
- 已重写 `DetachChildren.md``DetachFromParent.md``Destructor.md``GetChild.md``GetChildCount.md``GetChildren.md`
- 已重写 `GetComponent.md``GetComponentInChildren.md``GetComponentInParent.md``GetComponents.md``GetComponentsInChildren.md``RemoveComponent.md`
- 已重写 `GetID.md``GetName.md``GetParent.md``GetScene.md``GetTransform.md``GetUUID.md``SetName.md`
- 已写清 `Transform` 特例、层级查询顺序、`Scene` / registry 观察指针语义,以及 `RemoveComponent` 当前不会补发 `OnDestroy()`
## T14 Rendering / `RenderMaterialUtility` schema-driven 材质常量 payload 语义同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Rendering/RenderMaterialUtility/**`
- `docs/api/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline/**`
- 必要时 `docs/api/_tools/audit_api_docs.py`
- 主要源码依据:
- `engine/include/XCEngine/Rendering/RenderMaterialUtility.h`
- `engine/include/XCEngine/Rendering/Pipelines/BuiltinForwardPipeline.h`
- `engine/src/Rendering/Pipelines/BuiltinForwardPipeline.cpp`
- `engine/include/XCEngine/Resources/Material/Material.h`
- `tests/Rendering/unit/test_render_scene_extractor.cpp`
- 已关闭问题:
- `RenderMaterialUtility` 总览页尚未覆盖新进入 public header 的 `MaterialConstantPayloadView``ResolveSchemaMaterialConstantPayload(...)`
- `BuiltinForwardPipeline.md` 仍把逐材质常量写成“目前只写入 `baseColorFactor`”,没有同步当前优先消费 schema-driven payload、仅在缺失时回退 fallback 的实现
- `BuildBuiltinForwardMaterialData.md` 还没把自己定位成兼容 fallback helper容易与当前主路径混淆
- 完成记录:
- 已新增 `BuiltinForwardMaterialData.md``MaterialConstantPayloadView.md``ResolveSchemaMaterialConstantPayload.md`
- 已重写 `RenderMaterialUtility.md``BuildBuiltinForwardMaterialData.md`,写清 schema payload 与 builtin forward fallback 的边界
- 已同步 `BuiltinForwardPipeline.md``Render.md`,补入 `Material::GetConstantBufferData()` 主路径和 `FallbackPerMaterialConstants` 回退逻辑
- 已为“逐材质常量目前只写入 `baseColorFactor`”等旧口径增加 canonical 审计回归保护
- 已复跑结构审计并确认 `Stale canonical doc tokens: 0`
## T15 Editor / Scripting 脚本程序集重建与运行时锁语义同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Editor/Scripting/EditorScriptAssemblyBuilder/**`
- `docs/api/XCEngine/Editor/Application/RebuildScriptingAssemblies.md`
- 必要时 `docs/api/XCEngine/Editor/Application/Application.md`
- 主要源码依据:
- `editor/src/Scripting/EditorScriptAssemblyBuilder.cpp`
- `editor/src/Application.cpp`
- `tests/Editor/test_editor_script_assembly_builder.cpp`
- 已关闭问题:
- `EditorScriptAssemblyBuilder` 文档仍把 `mscorlib.dll` 写成“每次重建都复制”,没有同步当前“首次复制、后续复用项目本地 corlib”的实现
- `RebuildProjectAssemblies.md` 没写清活动 Mono runtime 仍持有 `GameScripts.dll` 时可能出现文件锁失败
- `Application::RebuildScriptingAssemblies` 文档仍写“构建失败会保留旧 runtime”与当前先 `ShutdownScriptingRuntime()` 再构建的实现不符
- 完成记录:
- 已同步 `EditorScriptAssemblyBuilder.md``RebuildProjectAssemblies.md`,补入项目本地 `mscorlib.dll` 复用策略、Mono 文件锁失败路径与测试锚点
- 已同步 `Application::RebuildScriptingAssemblies``Application.md`,写清“先卸载当前 runtime 释放程序集锁,再重建并在成功后重载”的真实顺序
- 已复跑结构审计并确认 `Broken .md links: 0``Stale canonical doc tokens: 0`
## T16 Resources / Rendering Passes SceneView shader ownership 口径同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Resources/BuiltinResources/**`
- `docs/api/XCEngine/Rendering/Passes/BuiltinInfiniteGridPass/**`
- `docs/api/XCEngine/Rendering/Passes/BuiltinObjectIdOutlinePass/**`
- 主要源码依据:
- `engine/include/XCEngine/Resources/BuiltinResources.h`
- `engine/src/Resources/BuiltinResources.cpp`
- `engine/include/XCEngine/Rendering/Passes/BuiltinInfiniteGridPass.h`
- `engine/src/Rendering/Passes/BuiltinInfiniteGridPass.cpp`
- `engine/include/XCEngine/Rendering/Passes/BuiltinObjectIdOutlinePass.h`
- `engine/src/Rendering/Passes/BuiltinObjectIdOutlinePass.cpp`
- `editor/src/Viewport/SceneViewportShaderPaths.h`
- 已关闭问题:
- `BuiltinResources.md` 仍把 `object-id-outline` / `infinite-grid` 写成 engine `builtin://shaders/*` helper 与 builtin shader 工厂的一部分,但当前头文件与实现已只保留 `forward-lit``object-id`
- `BuiltinInfiniteGridPass``BuiltinObjectIdOutlinePass` 已改为由调用方注入 `shaderPath`,文档却仍在传播“固定 builtin shader”口径
- 两个 pass 的文档树缺少 `SetShaderPath.md``GetShaderPath.md``BuiltinInfiniteGridPass` 还缺少 `Constructor.md``Destructor.md`
- 完成记录:
- 已更新 `BuiltinResources.md`,把 builtin shader 集合收口到 `forward-lit` / `object-id`,并写清 Scene View grid / outline shader 现在由 editor 侧 `SceneViewportShaderPaths` 提供
- 已重写 `BuiltinInfiniteGridPass.md``Render.md``Shutdown.md`,补上 `Constructor.md``Destructor.md``SetShaderPath.md``GetShaderPath.md`
- 已重写 `BuiltinObjectIdOutlinePass.md``Constructor.md``Render.md``Shutdown.md`,补上 `SetShaderPath.md``GetShaderPath.md`
## T17 Editor / Viewport `SceneViewportOverlayProviders` canonical 补页
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Editor/Viewport/SceneViewportOverlayProviders/**`
- 主要源码依据:
- `editor/src/Viewport/SceneViewportOverlayProviders.h`
- `editor/src/Viewport/SceneViewportOverlayProviders.cpp`
- `editor/src/Viewport/SceneViewportOverlayBuilder.h`
- `tests/editor/test_scene_viewport_overlay_providers.cpp`
- 已关闭问题:
- `editor/src/Viewport/SceneViewportOverlayProviders.h` 新进入工作树后还没有 canonical 页面
- 结构审计出现 `Editor source headers: 126``Valid source refs (Editor canonical): 125`
- 缺少对 overlay build context、provider registry 和默认相机 / 灯光 provider 工厂的当前语义说明
- 完成记录:
- 已新增 `SceneViewportOverlayProviders.md``SceneViewportOverlayBuildContext.md``ISceneViewportOverlayProvider.md``SceneViewportOverlayProviderRegistry.md`
- 已新增 `CreateSceneViewportCameraOverlayProvider.md``CreateSceneViewportLightOverlayProvider.md``BuildDefaultSceneViewportOverlayProviderRegistry.md`
- 已复跑结构审计并确认 `Valid source refs (Editor canonical): 126``Broken .md links: 0`
## T18 Editor / Viewport overlay builder provider 化口径同步
- 状态: `DONE`
- 认领人: `Codex`
- 优先级: `P1`
- 写入范围:
- `docs/api/XCEngine/Editor/Viewport/SceneViewportOverlayBuilder/**`
- `docs/api/XCEngine/Editor/Viewport/ViewportHostService/**`
- `docs/api/XCEngine/Editor/Viewport/Viewport.md`
- 必要时 `docs/api/_guides/Editor/**`
- 主要源码依据:
- `editor/src/Viewport/SceneViewportOverlayBuilder.h`
- `editor/src/Viewport/SceneViewportOverlayBuilder.cpp`
- `editor/src/Viewport/SceneViewportOverlayProviders.h`
- `editor/src/Viewport/ViewportHostService.h`
- `tests/editor/test_scene_viewport_overlay_providers.cpp`
- 已关闭问题:
- `SceneViewportOverlayBuilder` 文档仍把类型写成“无状态构建器 + static Build(...)”,没有同步当前实例化 builder + provider registry 的实现
- `SceneViewportOverlayBuilder` 目录缺少 `Constructor.md``GetProviderRegistry.md`
- `ViewportHostService.md` 仍把基础 overlay 来源写成 `SceneViewportOverlayBuilder::Build(...)`,没有同步当前成员 `m_sceneViewportOverlayBuilder`
- guide 层仍在传播 `overlay builder -> overlay pass` 与“先把 scene icon 塞进 builder”的旧扩展口径
- 完成记录:
- 已重写 `SceneViewportOverlayBuilder.md``Build.md`,把默认 registry、build context 和 provider 聚合链路写清
- 已新增 `Constructor.md``GetProviderRegistry.md`
- 已同步 `ViewportHostService.md``Viewport.md` 以及两篇 Editor guide 的当前 provider 化心智模型
- 已把新扩展建议改成 `overlay provider -> overlay builder -> overlay pass`
## 当前结论
- 本轮已经关掉十七组明确的内容级失配:
- `Viewport` 渲染计划与宿主流程
- `Core/Asset` 缓存接口与导入服务语义
- `MonoScriptRuntime` 托管销毁入口
- `Rendering` 相机请求、Passes 与单相机执行链旧口径
- `EditorConsoleSink` 生命周期与空指针返回语义
- 跨模块 guide / overview 漂移的本轮复核与拆分
- `Material` / `ArtifactFormats` / `AssetDatabase` 的材质 artifact v2 与 texture `AssetRef` 语义
- `GameObject` / `Scene` / `Mono` 的 tag-layer 与托管暴露语义
- `GameObject` 剩余辅助访问器 / 层级辅助页的内容化补齐
- `SceneViewportShaderPaths` canonical 缺页
- `Platform` 模块概述页与方法页的模板化废话清理
- `RHI/D3D12``Resources` 的 canonical 式概述废话清理
- `RenderMaterialUtility` / `BuiltinForwardPipeline` 的 schema-driven 材质常量 payload 语义
- `Editor` 脚本程序集重建流程中的 corlib 复用与 runtime 文件锁语义
- `BuiltinResources` 与 Scene View grid / outline shader ownership、`shaderPath` 注入口径
- `SceneViewportOverlayProviders` canonical 缺页
- `SceneViewportOverlayBuilder` / `ViewportHostService` / guide 层的 provider 化心智模型同步
- 当前结构审计为全绿。
- 当前仍建议保留 `T04``T05` 作为持续性复核入口,用来承接后续源码变更带来的新文档漂移。