docs: sync api and planning docs

This commit is contained in:
2026-04-08 16:07:03 +08:00
parent 08c3278e10
commit 31756847ab
1826 changed files with 44502 additions and 29645 deletions

294
AGENT.md
View File

@@ -4,142 +4,150 @@
如果 README、旧文档和当前文件树 / `CMakeLists.txt` / 测试 target 冲突,以当前 checkout 为准,并在本次工作里顺手修正文档。 如果 README、旧文档和当前文件树 / `CMakeLists.txt` / 测试 target 冲突,以当前 checkout 为准,并在本次工作里顺手修正文档。
## 1. 先建立的事实 ## 1. 开工顺序
- 顶层 `CMakeLists.txt` 当前纳入 `engine/``editor/``managed/``mvs/RenderDoc/``tests/` 进入仓库后,优先按下面顺序建立上下文:
- `engine/` 构建静态库 `XCEngine``editor/` 构建 `XCEditor`,但输出文件名仍是 `editor/bin/<Config>/XCEngine.exe`
- editor 默认把仓库内的 `project/` 识别为工程根目录,也支持 `--project <path>` 覆盖。
- 当前工程不再只是 `Assets/` 目录:已经真实使用 `Assets/ + .meta + Library/` 的工程布局。
- Mono 运行时与 editor 脚本类发现都从 `<project>/Library/ScriptAssemblies/` 加载程序集。
- `engine/CMakeLists.txt` 当前对 Vulkan 是硬依赖;`editor/``tests/` 首次配置会拉取 `ImGui``googletest`
## 2. 优先阅读顺序
进入仓库后,优先看这些文档和入口文件:
1. [AGENT.md](AGENT.md) 1. [AGENT.md](AGENT.md)
2. [README.md](README.md) 2. [README.md](README.md)
3. [docs/plan/end/RHI模块设计与实现/RHI模块总览.md](docs/plan/end/RHI模块设计与实现/RHI模块总览.md) 3. 相关模块的 `CMakeLists.txt`
4. [docs/plan/Shader与Material系统下一阶段计划.md](docs/plan/Shader与Material系统下一阶段计划.md) 4. 对应模块最近的测试目录与聚合 target
5. [docs/plan/SceneViewport_Overlay_Gizmo_Rework_Plan.md](docs/plan/SceneViewport_Overlay_Gizmo_Rework_Plan.md) 5. 对应设计文档
6. [tests/TEST_SPEC.md](tests/TEST_SPEC.md)
额外规则 当前最常用的设计入口
- 如果任务落在某个模块里,先读该模块的 `CMakeLists.txt` 和最近的测试目录。 - [docs/plan/end/RHI模块设计与实现/RHI模块总览.md](docs/plan/end/RHI模块设计与实现/RHI模块总览.md)
- `tests/TEST_SPEC.md` 仍然适合作为 GT 图规则和 RHI 边界说明,但 target 名称与目录变化时,始终以当前 `tests/CMakeLists.txt` 和子模块 `CMakeLists.txt` 为准。 - [docs/plan/Library启动预热与运行时异步加载混合重构计划_2026-04-04.md](docs/plan/Library启动预热与运行时异步加载混合重构计划_2026-04-04.md)
- [docs/plan/Library启动预热与运行时异步加载混合重构计划_进度更新_2026-04-04.md](docs/plan/Library启动预热与运行时异步加载混合重构计划_进度更新_2026-04-04.md)
- [docs/plan/Editor架构说明.md](docs/plan/Editor架构说明.md)
- [docs/plan/Renderer下一阶段_Unity风格Shader体系正式化计划_2026-04-06.md](docs/plan/Renderer下一阶段_Unity风格Shader体系正式化计划_2026-04-06.md)
- [docs/plan/XCUI完整架构设计与执行计划.md](docs/plan/XCUI完整架构设计与执行计划.md)
- [docs/plan/XCUI_Phase_Status_2026-04-05.md](docs/plan/XCUI_Phase_Status_2026-04-05.md)
- [docs/plan/C#脚本模块下一阶段计划.md](docs/plan/C%23脚本模块下一阶段计划.md)
- [tests/TEST_SPEC.md](tests/TEST_SPEC.md)
- [tests/UI/TEST_SPEC.md](tests/UI/TEST_SPEC.md)
## 3. 当前工程状态 已归档但当前仍常用的背景文档:
### 3.1 Engine 与工程布局 - [Library资产导入与缓存系统收口计划归档](docs/used/Library资产导入与缓存系统收口计划_完成归档_2026-04-03.md)
- [Shader与Material系统下一阶段计划归档](docs/used/Shader与Material系统下一阶段计划_完成归档_2026-04-04.md)
- [SceneViewport Overlay / Gizmo 重构计划(归档)](docs/used/SceneViewport_Overlay_Gizmo_Rework_Plan_完成归档_2026-04-04.md)
- [Unity式 SceneView Gizmo 正式化方案(归档)](docs/used/Unity式SceneView_Gizmo系统完整审查与正式化重构方案_完成归档_2026-04-06.md)
当前仓库已经不在“先把底层 sample 跑起来”的阶段,而是已经形成 如果任务落在 API 文档
- `RHI` 1. 先检查 `docs/plan/` 下有没有日期更晚的 API 相关计划或归档;当前活跃任务池是 [docs/plan/API文档实时同步任务池_2026-04-03.md](docs/plan/API文档实时同步任务池_2026-04-03.md)。这份任务池目前已经推进到第三轮 `T01-T20` 全部完成,结构审计保持全绿,但开始新一轮前仍要先确认是否又追加了新任务块。
- `Rendering` 2. 再看 [docs/api-skill.md](docs/api-skill.md)。
- `Editor viewport` 3. 再看 `docs/api/_meta/rebuild-status.md`
- `AssetDatabase / Library` 4. 一次只认领一个任务块,先改状态为 `DOING`,只写自己任务块允许的范围。
- `Mono scripting`
这几条主线之间的真实对接。 ## 2. 当前工程事实
`Core/Asset/AssetDatabase` 现在是当前工程的重要基线,不是预研代码。它已经负责: - 顶层 `CMakeLists.txt` 当前纳入 `engine/``editor/``new_editor/``managed/``mvs/RenderDoc/``tests/`
- `engine/` 构建静态库 `XCEngine``editor/` 构建 `XCEditor`,但输出文件名仍是 `editor/bin/<Config>/XCEngine.exe`
- `new_editor/` 当前构建 `XCUIEditorLib``XCUIEditorHost`;启用 `XCENGINE_BUILD_XCUI_EDITOR_APP` 时会输出 `new_editor/bin/<Config>/XCUIEditor.exe`
- editor 默认把仓库内的 `project/` 识别为工程根目录,也支持 `--project <path>` 覆盖。
- 当前工程真实使用 `Assets/ + .meta + Library/` 的项目布局;`project/Library/` 是当前 workflow 的一部分,不是可随手忽略的垃圾目录。
- Mono 运行时与 editor 的脚本类发现都从 `<project>/Library/ScriptAssemblies/` 加载程序集。
- 当前根目录里没有 `native` 占位项;更新目录树或迁移旧文档时,不要继续传播这条过期事实。
- 当前工作机是 Windows 文件系统;文档里统一写 `tests/Editor/``tests/Core/``tests/Scripting/` 等真实目录名,不要制造大小写噪音。
- `engine/CMakeLists.txt` 当前对 Vulkan 是硬依赖;`editor/``tests/` 首次配置会拉取 `ImGui``googletest`
- 扫描 `Assets/` ## 3. 子系统现状
- 为资源生成 `.meta`
- 维护 `Library/SourceAssetDB/assets.db`
- 维护 `Library/ArtifactDB/artifacts.db`
- 维护哈希化 `Library/Artifacts/`
因此: ### 3.1 Core / Asset / Resources
- `project/Library/` 虽然可重建,但在当前 workflow 里不是可以随手忽略的“垃圾目录” - `Core/Asset/AssetDatabase``AssetImportService``ProjectAssetIndex``ResourceManager` 已形成正式导入与运行时加载链路
- 涉及资源导入、meta、artifact、脚本程序集发现时不要擅自删除 `project/Library/``.meta` 文件来“清环境”。 - 当前真实职责包括:
- 扫描 `Assets/`
- 为资源生成 `.meta`
- 维护 `Library/SourceAssetDB/assets.db`
- 维护 `Library/ArtifactDB/artifacts.db`
- 写入 `Library/Artifacts/`
- 最新活跃设计文档已经把下一阶段目标收口到“启动阶段前置恢复索引 / 缓存状态,运行时按需异步加载 payload”。
- `BootstrapProject()` / `BootstrapProjectAssets()` 已正式接入启动链路接下来重点是指标固化、UI 状态拆分和剩余同步兜底点审计。
- 当前还不要把 `AssetImportService``ProjectAssetIndex``ResourceManager` 的职责重新揉回一团;先看 [docs/plan/Library启动预热与运行时异步加载混合重构计划_2026-04-04.md](docs/plan/Library启动预热与运行时异步加载混合重构计划_2026-04-04.md)。
- 材质 artifact 当前是 schema v2
- `kMaterialArtifactSchemaVersion = 2`
- magic `XCMAT02`
- texture binding 序列化三元组是 `binding name + encoded AssetRef + optional path`
- `Material` 当前同时维护 loaded handle、稳定 `AssetRef` 与 path 元数据;`GetTexture()` 首次访问时可触发懒加载,`GetTextureBindingLoadedTexture()` 不触发加载。
### 3.2 Rendering ### 3.2 Rendering
当前 `engine/include/XCEngine/Rendering/``engine/src/Rendering/` 已经形成正式主链: - 当前正式主链是 `SceneRenderer -> CameraRenderer -> RenderPipeline`
- 现有正式能力包括:
- `SceneRenderer` - forward 主几何渲染
- `CameraRenderer` - `ObjectId` 渲染与 editor picking
- `RenderPipeline` - `BuiltinInfiniteGridPass`
- `RenderSceneExtractor` - `BuiltinObjectIdOutlinePass`
- `RenderResourceCache` - `CameraRenderRequest::postScenePasses`
- `SceneRenderRequestPlanner` - `CameraRenderRequest::overlayPasses`
- `RenderSurface` - 当前主线不是 render graph而是 shader / material contract、builtin pass contract 和 renderer-owned feature contract。
当前已经落地并应被视为正式能力的内容包括:
- 内建 forward 主几何渲染
- `ObjectId` 渲染与 editor picking
- `BuiltinInfiniteGridPass`
- `BuiltinObjectIdOutlinePass`
- `CameraRenderRequest::overlayPasses`
当前 Renderer 的下一阶段主线不是 render graph而是
- shader asset contract
- material GPU binding
- builtin pass contract
- renderer-owned feature contract
对应设计文档是 [docs/plan/Shader与Material系统下一阶段计划.md](docs/plan/Shader与Material系统下一阶段计划.md)。
### 3.3 Editor ### 3.3 Editor
当前 editor 的事实: - editor 仍然是 `D3D12` 宿主应用。
- Scene/Game viewport 已通过引擎 `Rendering + RHI` 输出离屏纹理,再由 editor 宿主接入 ImGui。
- 当前 Scene View 主链已经显式拆成:
- `SceneViewportChrome`
- `SceneViewportInteractionFrame`
- `SceneViewportNavigation`
- `SceneViewportTransformGizmoCoordinator`
- `ViewportHostService`
- `editor/src/Viewport/` 当前稳定存在的关键入口包括:
- `SceneViewportCameraController`
- `SceneViewportChrome`
- `SceneViewportEditorModes`
- `SceneViewportHudOverlay`
- `SceneViewportInteractionActions`
- `SceneViewportInteractionFrame`
- `SceneViewportInteractionResolver`
- `SceneViewportMoveGizmo`
- `SceneViewportNavigation`
- `SceneViewportOverlayBuilder`
- `SceneViewportOverlayFrameCache`
- `SceneViewportOverlayProviders`
- `SceneViewportOverlaySpriteResources`
- `SceneViewportPassSpecs`
- `SceneViewportPicker`
- `SceneViewportResourcePaths`
- `SceneViewportRotateGizmo`
- `SceneViewportScaleGizmo`
- `SceneViewportShaderPaths`
- `SceneViewportTransformGizmoCoordinator`
- `SceneViewportTransformGizmoFrameBuilder`
- `ViewportHostRenderFlowUtils`
- `ViewportHostRenderTargets`
- `ViewportHostSurfaceUtils`
- `ViewportObjectIdPicker`
- `SceneViewportShaderPaths.h` 当前主要是兼容 include路径真实 owner 已转到 `SceneViewportResourcePaths.h`
- `tests/Editor/` 已有 `test_scene_viewport_chrome.cpp``test_scene_viewport_interaction_frame.cpp``test_scene_viewport_navigation.cpp``test_scene_viewport_transform_gizmo_coordinator.cpp`,不要再按“这些 helper 还没落地”理解当前 editor。
- 它仍然是 `D3D12` 宿主应用。 ### 3.4 XCUI / New Editor
- Scene/Game viewport 已经通过引擎 `Rendering + RHI` 输出离屏纹理。
- `ViewportHostService` 是 editor 与 renderer 的关键接线层。
- object-id picking、selection outline、scene icon / gizmo overlay 已经进入正规化收口阶段。
当前 `editor/src/Viewport/` 已经存在: - `new_editor/` 是当前 `XCUI` editor sandbox 主线;旧 `editor/` 的整体替换仍处于延后状态,不要把 `XCUI` 计划误读成“已经整体替换现有 editor”。
- 当前宿主分层是:
- `XCUIEditorLib`
- `XCUIEditorHost`
- `XCUIEditorApp`(可选应用壳)
- 共享 UI core、runtime screen host 与 widget 基础能力主要沉淀在 `engine/include/XCEngine/UI/``engine/src/UI/``new_editor/` 负责 XCUI editor 壳、宿主与 widget sandbox。
- XCUI / new_editor 的测试规范以 [tests/UI/TEST_SPEC.md](tests/UI/TEST_SPEC.md) 为准;根目录虽然有 `tests/NewEditor/`,但当前具体测试实现主要放在 `tests/UI/` 下。
- `SceneViewportOverlayBuilder` ### 3.5 Scripting
- `SceneViewportEditorOverlayPass`
- `SceneViewportPicker`
- `SceneViewportMoveGizmo`
- `SceneViewportRotateGizmo`
- `SceneViewportScaleGizmo`
这意味着 - 当前脚本链路由三部分组成
- `managed/XCEngine.ScriptCore/`
- `managed/GameScripts/`
- `project/Assets/**/*.cs`
- 构建结果分两类:
- `xcengine_managed_assemblies` 生成引擎示例程序集
- `xcengine_project_managed_assemblies` 生成项目脚本程序集,并复制到 `project/Library/ScriptAssemblies/`
- `project/Library/ScriptAssemblies/` 里的当前快照可能落后于目标态;判断“成功构建后应有哪些程序集”时,以 `managed/CMakeLists.txt``editor/src/Scripting/EditorScriptAssemblyBuilder.cpp` 与对应测试为准,而不是只看工作树里此刻存着什么。
- `ScriptEngine` 当前已具备脚本类发现、字段元数据读取、默认值读取、stored override 管理和运行时 managed field 同步。
- Inspector 侧已经存在 `ScriptComponentEditor`;脚本相关改动通常同时影响 `engine/src/Scripting/``managed/``project/Assets/Scripts/``editor/src/ComponentEditors/``tests/Scripting/` / `tests/Editor/`
- editor 是宿主,不是第二套 renderer。 ### 3.6 Tests
- 新的世界空间 overlay不应继续堆回 `SceneViewPanel.cpp` 的 ImGui world overlay 路径。
- 优先沿 `overlayPasses -> overlay builder -> canonical frame data -> overlay pass` 方向扩展。
### 3.4 Scripting
当前脚本链路由三部分组成:
- `managed/XCEngine.ScriptCore/`
- `managed/GameScripts/`
- `project/Assets/**/*.cs`
构建结果分两类:
- `xcengine_managed_assemblies` 生成引擎示例程序集
- `xcengine_project_managed_assemblies` 生成项目脚本程序集,并复制到 `project/Library/ScriptAssemblies/`
`ScriptEngine` 当前已经具备:
- 脚本类发现
- 字段元数据读取
- 默认值读取
- stored override 管理
- 运行时 managed field 同步
Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通常同时影响:
- `engine/src/Scripting/`
- `managed/`
- `project/Assets/Scripts/`
- `editor/src/ComponentEditors/`
- `tests/Scripting/`
- `tests/Editor/test_script_component_editor_utils.cpp`
### 3.5 Tests
当前测试主目录包括: 当前测试主目录包括:
@@ -147,14 +155,17 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
- `tests/Core/` - `tests/Core/`
- `tests/Debug/` - `tests/Debug/`
- `tests/Editor/` - `tests/Editor/`
- `tests/Fixtures/`
- `tests/Input/` - `tests/Input/`
- `tests/Memory/` - `tests/Memory/`
- `tests/NewEditor/`
- `tests/Rendering/` - `tests/Rendering/`
- `tests/Resources/` - `tests/Resources/`
- `tests/RHI/` - `tests/RHI/`
- `tests/Scene/` - `tests/Scene/`
- `tests/Scripting/` - `tests/Scripting/`
- `tests/Threading/` - `tests/Threading/`
- `tests/UI/`
需要特别记住的聚合 target 需要特别记住的聚合 target
@@ -162,6 +173,9 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
- `rendering_all_tests` - `rendering_all_tests`
- `rendering_phase_regression` - `rendering_phase_regression`
- `editor_tests` - `editor_tests`
- `core_ui_tests`
- `editor_ui_tests`
- `runtime_ui_tests`
- `scripting_tests` - `scripting_tests`
## 4. 不可忽视的硬约束 ## 4. 不可忽视的硬约束
@@ -175,7 +189,18 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
不要沿用“计划中但未落地”的旧说法。 不要沿用“计划中但未落地”的旧说法。
### 4.2 RHI 抽象层与后端层必须分层 ### 4.2 不要随手清空 `project/Library/` 或删 `.meta`
`project/Library/` 虽然可重建,但它在当前 workflow 里承载:
- `SourceAssetDB`
- `ArtifactDB`
- `Artifacts`
- `ScriptAssemblies`
涉及资源导入、artifact、脚本程序集发现时不要把删库重建当作默认修复手段。
### 4.3 RHI 抽象层与后端层必须分层
`tests/RHI/unit/``tests/RHI/integration/` 只能依赖公共 RHI 抽象。 `tests/RHI/unit/``tests/RHI/integration/` 只能依赖公共 RHI 抽象。
@@ -187,7 +212,7 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
如果必须这么做,优先修 RHI而不是污染测试边界。 如果必须这么做,优先修 RHI而不是污染测试边界。
### 4.3 Editor 是宿主,不是第二套渲染器 ### 4.4 Editor 是宿主,不是第二套渲染器
如果 viewport、outline、picking 或 gizmo 有问题,优先判断: 如果 viewport、outline、picking 或 gizmo 有问题,优先判断:
@@ -195,28 +220,25 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
-`RenderSurface` / RHI 输出问题 -`RenderSurface` / RHI 输出问题
- 还是 editor 宿主接线问题 - 还是 editor 宿主接线问题
不要因为 editor 当前是 D3D12 host就把问题草率塞回 editor 私有渲染逻辑。 不要因为 editor 当前是 D3D12 host就把问题草率塞回 editor 私有渲染逻辑。
### 4.4 不要再扩写 ImGui world overlay ### 4.5 不要再把新逻辑堆回旧的 ImGui world overlay
当前 viewport overlay / gizmo 已有明确收口方向。新功能若仍然继续堆在: 新的世界空间 overlay / gizmo 逻辑如果仍然直接堆在:
- `SceneViewPanel.cpp` - `SceneViewPanel.cpp`
- `SceneViewportOverlayRenderer.cpp` 的 ImGui world draw 路径 - panel 层临时拼的 immediate draw / ad-hoc overlay 路径
通常就是逆着当前架构方向在走。 通常就是逆着当前架构方向在走。优先入口是:
优先入口是:
- `CameraRenderRequest::overlayPasses` - `CameraRenderRequest::overlayPasses`
- `SceneViewportOverlayBuilder` - `SceneViewportOverlayBuilder`
- `SceneViewportEditorOverlayPass` - `SceneViewportEditorOverlayPass`
- `SceneViewportTransformGizmoCoordinator`
### 4.5 backpack 导入行为必须统一 ### 4.6 `backpack` 导入行为必须统一
这是仓库里已经踩过的真实坑。 这是仓库里已经踩过的真实坑。`backpack` 相关资源在以下路径中的导入行为必须保持一致:
`backpack` 相关资源在以下路径中的导入行为必须保持一致:
- editor - editor
- runtime - runtime
@@ -225,7 +247,7 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
不要只在局部路径里额外加 `MeshImportFlags::FlipUVs` 之类的补丁。 不要只在局部路径里额外加 `MeshImportFlags::FlipUVs` 之类的补丁。
### 4.6 `mvs/` 不是长期主线模块 ### 4.7 `mvs/` 不是长期主线模块
`mvs/` 里有样例、研究和工具,但当前正式引擎逻辑的长期落点应优先是: `mvs/` 里有样例、研究和工具,但当前正式引擎逻辑的长期落点应优先是:
@@ -236,6 +258,20 @@ Inspector 侧已经存在 `ScriptComponentEditor`,因此脚本相关改动通
不要把正式渲染逻辑重新堆回 sample 子树长期存活。 不要把正式渲染逻辑重新堆回 sample 子树长期存活。
### 4.8 API 文档任务必须看最新计划并复跑审计
只要任务涉及 `docs/api/`
1. 先检查 `docs/plan/` 下有没有更新日期更晚的 API 计划或归档。
2. 以最新任务池和 [docs/api-skill.md](docs/api-skill.md) 为执行规范。
3. 改完必须重新执行:
```powershell
python -B docs/api/_tools/audit_api_docs.py
```
如果审计没回绿,不算完成。
## 5. 推荐构建与验证入口 ## 5. 推荐构建与验证入口
### 5.1 配置 ### 5.1 配置
@@ -268,7 +304,7 @@ cmake --build build --config Debug --target scripting_tests
-`engine/RHI`:先跑 `rhi_abstraction_tests``rhi_backend_tests`,再决定是否扩展到 `rhi_all_tests` -`engine/RHI`:先跑 `rhi_abstraction_tests``rhi_backend_tests`,再决定是否扩展到 `rhi_all_tests`
-`engine/Rendering`:先跑 `rendering_unit_tests` 和最相关的 `rendering_integration_*`,必要时再跑 `rendering_phase_regression` -`engine/Rendering`:先跑 `rendering_unit_tests` 和最相关的 `rendering_integration_*`,必要时再跑 `rendering_phase_regression`
-`editor/Viewport` 或 Inspector先跑 `editor_tests` -`editor/Viewport``editor/UI` 或 Inspector先跑 `editor_tests`
-`engine/Scripting``managed/``project/Assets/Scripts/`:先构建 `xcengine_project_managed_assemblies`,再跑 `scripting_tests` -`engine/Scripting``managed/``project/Assets/Scripts/`:先构建 `xcengine_project_managed_assemblies`,再跑 `scripting_tests`
- 改资源导入、`.meta`、artifact 相关逻辑:优先跑 `tests/Resources/` 里的对应 target - 改资源导入、`.meta`、artifact 相关逻辑:优先跑 `tests/Resources/` 里的对应 target
@@ -282,10 +318,12 @@ ctest --test-dir build -C Debug --output-on-failure
- RHI 抽象与后端:`engine/include/XCEngine/RHI/``engine/src/RHI/``tests/RHI/` - RHI 抽象与后端:`engine/include/XCEngine/RHI/``engine/src/RHI/``tests/RHI/`
- Rendering 主链与 pass`engine/include/XCEngine/Rendering/``engine/src/Rendering/``tests/Rendering/` - Rendering 主链与 pass`engine/include/XCEngine/Rendering/``engine/src/Rendering/``tests/Rendering/`
- Editor viewport / gizmo / picking`editor/src/Viewport/``editor/src/panels/SceneViewPanel.cpp``tests/Editor/`
- 资源导入与工程布局:`engine/include/XCEngine/Core/Asset/``engine/src/Core/Asset/``editor/src/Managers/ProjectManager.cpp``project/Assets/``project/Library/` - 资源导入与工程布局:`engine/include/XCEngine/Core/Asset/``engine/src/Core/Asset/``editor/src/Managers/ProjectManager.cpp``project/Assets/``project/Library/`
- Material / shader / artifact`engine/include/XCEngine/Resources/Material/``engine/src/Resources/Material/``engine/include/XCEngine/Core/Asset/ArtifactFormats.h``tests/Resources/Material/`
- Editor viewport / gizmo / picking`editor/src/Viewport/``editor/src/panels/SceneViewPanel.cpp``tests/Editor/`
- Editor actions / project routing`editor/src/Actions/``editor/src/Commands/``editor/src/Core/``editor/src/Managers/``tests/Editor/test_action_routing.cpp`
- 脚本运行时与程序集:`engine/include/XCEngine/Scripting/``engine/src/Scripting/``managed/``project/Assets/Scripts/``tests/Scripting/` - 脚本运行时与程序集:`engine/include/XCEngine/Scripting/``engine/src/Scripting/``managed/``project/Assets/Scripts/``tests/Scripting/`
- 默认工程与项目描述:`project/Project.xcproject``editor/src/Core/ProjectRootResolver.h``editor/src/Utils/ProjectFileUtils.h` - API 文档:`docs/api/XCEngine/``docs/api/_guides/``docs/api/_tools/audit_api_docs.py``docs/plan/API文档实时同步任务池_2026-04-03.md`
## 7. 适合当前仓库的工作方式 ## 7. 适合当前仓库的工作方式
@@ -295,4 +333,4 @@ ctest --test-dir build -C Debug --output-on-failure
4. 目录、target、入口、文档名改了就同步更新 README / AGENT / 相关说明。 4. 目录、target、入口、文档名改了就同步更新 README / AGENT / 相关说明。
5. 如果任务会有意重建 `project/Library/`、脚本程序集或 `.meta`,在结果里明确说明哪些文件是有意生成的。 5. 如果任务会有意重建 `project/Library/`、脚本程序集或 `.meta`,在结果里明确说明哪些文件是有意生成的。
这份文档的作用是给 agent 一“当前真实工程长什么样”的基线。它本身也必须随着工程演进一起维护,不能再落回旧状态说明。 这份文档的作用是给 agent 一“当前真实工程长什么样”的基线。它本身也必须随着工程演进一起维护,不能再落回旧状态说明。

697
README.md
View File

@@ -1,16 +1,27 @@
# XCEngine # XCEngine
XCEngine 是一个 Windows 优先、编辑器优先的模块化 C++ 游戏引擎工作区。当前主线已经形成 `RHI -> Rendering -> Editor Viewport -> AssetDatabase/Library -> Mono Scripting` 的可运行闭环,不再只是示例代码集合。 XCEngine 是一个 Windows 优先、编辑器优先的模块化 C++ 游戏引擎工作区。当前主线已经形成 `RHI -> Rendering -> Editor Viewport -> AssetDatabase/Library -> Mono Scripting` 的可运行闭环,不再只是若干独立 sample 的集合。
这份 README 面向引擎用户:关注怎么进入项目、怎么构建、当前仓库各目录分别负责什么。面向构建本引擎的 coding agent请看 [AGENT.md](AGENT.md)。 这份 README 面向引擎用户:重点回答项目是什么、当前能做什么、怎么构建、怎么启动,以及当前仓库各目录分别承担什么职责。面向参与引擎实现和文档维护的 coding agent请看 [AGENT.md](AGENT.md)。
## 项目定位 ## 项目定位
- `engine/` 提供静态库 `XCEngine`,包含 `RHI``Rendering``Resources``Scene``Scripting` 等核心模块。 - `engine/` 构建静态库 `XCEngine`,包含 `RHI``Rendering``Resources``Scene``Scripting` 等核心模块。
- `editor/` 提供桌面编辑器 `XCEditor`,输出文件名为 `XCEngine.exe`,默认打开仓库内的 `project/` - `editor/` 构建桌面编辑器 `XCEditor`,输出文件名`XCEngine.exe`,默认打开仓库内的 `project/`
- `project/` 是当前随仓库维护的示例工程,已经采用 `Assets/ + .meta + Library/` 的工程布局 - `new_editor/` 维护基于 `XCUI` 的新宿主与 UI sandbox当前与旧 `editor/` 并行演进,应用输出名为 `XCUIEditor.exe`
- `project/` 是随仓库维护的示例工程,已经采用 `Assets/ + .meta + Library/` 的工程布局。
- `managed/` 负责 `XCEngine.ScriptCore.dll`、示例 `GameScripts.dll` 以及项目脚本程序集构建。 - `managed/` 负责 `XCEngine.ScriptCore.dll`、示例 `GameScripts.dll` 以及项目脚本程序集构建。
- `tests/` 覆盖 Engine、RHI、Rendering、Editor、Scripting 等主模块。 - `tests/` 覆盖 Engine、RHI、Rendering、Editor、Scripting、XCUI 等主线模块。
## 当前能力概览
- `RHI` 当前维护 `D3D12 / OpenGL / Vulkan` 三后端。
- `Rendering` 已形成 `SceneRenderer -> CameraRenderer -> RenderPipeline` 主链,支持 `ObjectId``InfiniteGrid``Outline``overlayPasses` 等能力。
- `Core/Asset` 已经不是简单加载器,当前真实维护 `Assets/.meta/Library` 风格的 `AssetDatabase`、artifact 缓存和项目资源索引。
- `Library` 当前已经采用“启动阶段恢复索引与缓存状态 + 运行时按需异步恢复 payload”的混合工作流`BootstrapProject()` 已接入正式启动链路。
- `Material` 与材质 artifact 已经进入稳定格式阶段,当前 `.xcmat` 使用 schema v2。
- 编辑器 Scene/Game viewport 已通过引擎 `Rendering + RHI` 链路渲染到离屏纹理,再接入 ImGui。
- `ScriptComponent` 已打通脚本类发现、字段元数据读取、字段编辑和运行时字段同步。
## 环境要求 ## 环境要求
@@ -60,7 +71,7 @@ cmake --build build --config Debug --target xcengine_project_managed_assemblies
- `XCEngine` 是引擎静态库。 - `XCEngine` 是引擎静态库。
- `XCEditor` 是编辑器 target输出文件名仍为 `editor/bin/<Config>/XCEngine.exe` - `XCEditor` 是编辑器 target输出文件名仍为 `editor/bin/<Config>/XCEngine.exe`
- `xcengine_managed_assemblies` 生成 `managed/` 示例托管程序集。 - `xcengine_managed_assemblies` 生成 `managed/` 下的示例托管程序集。
- `xcengine_project_managed_assemblies` 会扫描 `project/Assets/**/*.cs`,并把结果输出到 `project/Library/ScriptAssemblies/` - `xcengine_project_managed_assemblies` 会扫描 `project/Assets/**/*.cs`,并把结果输出到 `project/Library/ScriptAssemblies/`
### 3. 启动编辑器 ### 3. 启动编辑器
@@ -75,7 +86,7 @@ cmake --build build --config Debug --target xcengine_project_managed_assemblies
.\editor\bin\Debug\XCEngine.exe --project D:\Path\To\MyProject .\editor\bin\Debug\XCEngine.exe --project D:\Path\To\MyProject
``` ```
如果 Inspector 里看不到 C# 脚本类,先确认 `project/Library/ScriptAssemblies/` 中已经生成: 如果 Inspector 里看不到 C# 脚本类,先确认 `project/Library/ScriptAssemblies/` 中已经生成下面这 3 个程序集。当前工作树如果暂时缺少 `XCEngine.ScriptCore.dll`,通常说明项目脚本程序集还没有按最新状态完成重建
- `XCEngine.ScriptCore.dll` - `XCEngine.ScriptCore.dll`
- `GameScripts.dll` - `GameScripts.dll`
@@ -102,311 +113,413 @@ cmake --build build --config Debug --target scripting_tests
### Engine ### Engine
- `RHI` 正式维护 `D3D12 / OpenGL / Vulkan` 三后端。 - `RHI` 已经不是单后端实验代码,而是 `D3D12 / OpenGL / Vulkan` 三后端并行维护
- `Rendering` 已形成 `SceneRenderer -> CameraRenderer -> RenderPipeline` 主链,包含 `ObjectId``InfiniteGrid``Outline``overlayPasses` 等能力 - `Rendering` 当前正式主线是 `SceneRenderer -> CameraRenderer -> RenderPipeline`,而不是 sample 私有渲染分支
- `Resources``Core/Asset`不只是简单加载器,当前已经具备 `Assets/.meta/Library` 风格的 `AssetDatabase` 与 artifact 缓存 - `Resources``Core/Asset`形成项目资源导入、artifact 缓存和运行时加载的统一链路
### Editor ### Editor
- 当前 editor 是 `D3D12` 宿主应用,但 Scene/Game viewport 已通过引擎 `Rendering + RHI` 链路渲染到离屏纹理,再接入 ImGui - 当前 editor 是 `D3D12` 宿主应用,但 Scene/Game viewport 渲染本身走引擎 `Rendering + RHI`
- `Viewport` 相关代码已经进入 overlay/gizmo 正规化阶段,`SceneViewportOverlayBuilder``SceneViewportEditorOverlayPass``ObjectId` picking 都已落地 - `Viewport` 子系统当前已经拆成更清晰的链路:`SceneViewportChrome -> SceneViewportInteractionFrame -> SceneViewportNavigation -> SceneViewportTransformGizmoCoordinator -> ViewportHostService`
- Inspector 已支持 `ScriptComponent` 的脚本类选择、字段元数据读取、字段重置与基础编辑 - `tests/Editor/` 已覆盖 `SceneViewportChrome``SceneViewportInteractionFrame``SceneViewportNavigation``SceneViewportTransformGizmoCoordinator` 等新 helper
### Project & Scripting ### Project & Scripting
- 示例工程位于 `project/`当前工程文件是 `Project.xcproject`,启动场景为 `Assets/Scenes/Main.xc` - 示例工程位于 `project/`,工程文件是 `Project.xcproject`,启动场景为 `Assets/Scenes/Main.xc`
- `project/Assets/` 现已包含 `.meta` 文件,`project/Library/` 则维护 `SourceAssetDB``ArtifactDB``Artifacts``ScriptAssemblies` - `project/Library/` 虽然是生成目录,但在当前 workflow 里承担 `SourceAssetDB``ArtifactDB``Artifacts``ScriptAssemblies` 等关键角色
- `managed/` 会生成引擎脚本 API 与示例脚本程序集,项目资产下的 `.cs` 文件也会单独编译为项目脚本程序集。 - `managed/` 会生成引擎脚本 API 与示例脚本程序集,项目资产下的 `.cs` 文件也会单独编译为项目脚本程序集。
### Tests ### Tests
- `tests/` 已覆盖 `Core``Memory``Threading``Scene``Resources``RHI``Rendering``Editor``Scripting` 等模块。 - `tests/` 已覆盖 `Core``Memory``Threading``Scene``Resources``RHI``Rendering``Editor``Scripting`主线模块。
- `tests/Rendering/` 当前已包含 `backpack_scene``backpack_lit_scene``camera_stack_scene``offscreen_scene`集成场景。 - `tests/Rendering/` 当前维护一组集成场景测试
- `tests/RHI/` 同时维护抽象层测试与后端专用测试`D3D12 / OpenGL / Vulkan` 都有独立子树 - `tests/RHI/` 同时维护抽象层测试与后端专用测试。
## 完整目录结构 ## 完整目录结构
以下目录树当前工程入口为准,保留了当前 workflow 已经实使用的生成目录;省略 `.git/``build/_deps/`临时文件 以下目录树当前工作树整理,保留了当前 workflow 已经实使用的生成目录与关键子树;省略 `.git/``build/_deps/`部分重复资源文件。像 `project/.xceditor/thumbs/``project/Library/Artifacts/` 这类会随本地导入状态变化的内容,用结构模式表示
```text ```text
XCEngine/ XCEngine/
├── .gitattributes |- .gitattributes
├── .gitignore |- .gitignore
├── AGENT.md |- AGENT.md
├── CMakeLists.txt |- CMakeLists.txt
├── README.md |- README.md
├── build/ # 本地 CMake 构建输出 |- build/ # 本地 CMake 构建输出
├── docs/ |- docs/
│ ├── api/ | |- api/
│ ├── XCEngine/ | | |- XCEngine/
│ ├── _guides/ | | |- _guides/
│ ├── _meta/ | | |- _meta/
│ ├── _tools/ | | |- _tools/
│ └── main.md | | `- main.md
│ ├── issues/ | |- issues/
├── plan/ | | `- Editor模块_Console面板错误绑定fallback sink导致运行时日志不显示4.3.md
│ ├── end/ | |- plan/
│ │ │ ├── RHI模块设计与实现/ | | |- end/
│ │ │ ├── RHIFence.md | | | |- RHI模块设计与实现/
│ └── RHI模块总览.md | | | | |- RHIFence.md
└── 编辑器与运行时分层架构设计.md | | | | `- RHI模块总览.md
│ ├── 开题报告和任务书/ | | | `- 编辑器与运行时分层架构设计.md
│ ├── 旧版题目/ | | |- 开题报告和任务书/
│ │ ├── API文档并行更新任务池_2026-04-02.md | | |- 旧版题目/
│ ├── C#脚本模块的设计与实现.md | | |- API文档实时同步任务池_2026-04-03.md
│ ├── Editor架构说明.md | | |- C#脚本模块下一阶段计划.md
│ ├── SceneViewport_Overlay_Gizmo_Rework_Plan.md | | |- Editor架构说明.md
├── Shader与Material系统下一阶段计划.md | | |- Library启动预热与运行时异步加载混合重构计划_2026-04-04.md
│ ├── Unity SRP API参考文档.md | | |- Library启动预热与运行时异步加载混合重构计划_进度更新_2026-04-04.md
│ ├── Unity式Library资产导入与缓存系统重构方案.md | | |- Renderer下一阶段_Unity风格Shader体系正式化计划_2026-04-06.md
│ ├── Unity式Tick系统与PlayMode运行时方案.md | | |- Unity SRP API参考文档.md
│ ├── Unity式Tick系统与PlayMode运行时方案-阶段进展.md | | |- XCUI_Phase_Status_2026-04-05.md
│ │ └── Unity绝区零开发文档还原版.md | | |- XCUI完整架构设计与执行计划.md
├── used/ | | `- Unity绝区零开发文档还原版.md
│ ├── api-skill.md | |- used/ # 历史材料、归档计划与截图
│ ├── blueprint-skill.md | | |- API文档实时同步任务池_2026-04-03_第一轮归档.md
└── blueprint.md | | |- API文档实时同步任务池_2026-04-03_第二轮归档.md
├── editor/ | | |- C#脚本模块的设计与实现_阶段一归档_2026-04-03.md
├── CMakeLists.txt | | |- Library资产导入与缓存系统收口计划_完成归档_2026-04-03.md
│ ├── README.md | | |- Renderer结构收口与代码正式化计划_完成归档_2026-04-05.md
├── resources/ | | |- SceneViewport_Overlay_Gizmo_Rework_Plan_完成归档_2026-04-04.md
│ └── Icons/ | | |- Shader与Material系统下一阶段计划_完成归档_2026-04-04.md
├── src/ | | |- Unity式SceneView_Gizmo系统完整审查与正式化重构方案_完成归档_2026-04-06.md
│ │ ├── Actions/ | | |- Unity式Tick系统与PlayMode运行时方案-阶段进展.md
│ ├── Commands/ | | `- Unity式Tick系统与PlayMode运行时方案.md
│ │ ├── ComponentEditors/ | |- api-skill.md
│ ├── Core/ | |- blueprint-skill.md
│ ├── Layers/ | `- blueprint.md
│ │ ├── Layout/ |- editor/
│ │ ├── Managers/ | |- CMakeLists.txt
│ │ ├── panels/ | |- README.md
├── Platform/ | |- bin/ # 编辑器输出目录,产物名为 XCEngine.exe
│ ├── UI/ | |- resources/
│ ├── Utils/ | | `- Icons/
│ ├── Viewport/ | `- src/
│ │ ├── Passes/ | |- Actions/
│ │ ├── SceneViewportOverlayBuilder.cpp | |- Commands/
│ ├── SceneViewportOverlayBuilder.h | |- ComponentEditors/
│ │ │ ├── SceneViewportOverlayRenderer.cpp | |- Core/
│ ├── SceneViewportOverlayRenderer.h | |- Layers/
│ │ ├── SceneViewportPicker.cpp | |- Layout/
│ ├── SceneViewportPicker.h | |- Managers/
│ ├── SceneViewportMoveGizmo.cpp | |- panels/
│ ├── SceneViewportMoveGizmo.h | | |- ConsolePanel.cpp
│ ├── SceneViewportRotateGizmo.cpp | | |- ConsolePanel.h
│ ├── SceneViewportRotateGizmo.h | | |- GameViewPanel.cpp
│ ├── SceneViewportScaleGizmo.cpp | | |- GameViewPanel.h
│ ├── SceneViewportScaleGizmo.h | | |- HierarchyPanel.cpp
│ ├── ViewportHostRenderFlowUtils.h | | |- HierarchyPanel.h
│ └── ViewportHostService.h | | |- InspectorPanel.cpp
├── Application.cpp | | |- InspectorPanel.h
├── Application.h | | |- MenuBar.cpp
├── EditorApp.rc | | |- MenuBar.h
├── Theme.cpp | | |- Panel.cpp
├── Theme.h | | |- Panel.h
└── main.cpp | | |- PanelCollection.h
│ └── bin/ # 编辑器输出目录,输出名为 XCEngine.exe | | |- ProjectPanel.cpp
├── engine/ | | |- ProjectPanel.h
│ ├── CMakeLists.txt | | |- SceneViewPanel.cpp
│ ├── include/ | | |- SceneViewPanel.h
└── XCEngine/ | | `- ViewportPanelContent.h
│ │ ├── Audio/ | |- Platform/
│ │ ├── Components/ | |- Scripting/
│ │ ├── Core/ | |- UI/
│ ├── Asset/ | |- Utils/
│ │ │ ├── Containers/ | |- Viewport/
│ │ │ ├── IO/ | | |- Passes/
│ └── Math/ | | | |- SceneViewportEditorOverlayPass.cpp
├── Debug/ | | | |- SceneViewportEditorOverlayPass.h
├── Input/ | | | |- SceneViewportGridPass.cpp
├── Memory/ | | | |- SceneViewportGridPass.h
├── Platform/ | | | |- SceneViewportSelectionOutlinePass.cpp
│ └── Windows/ | | | `- SceneViewportSelectionOutlinePass.h
├── Rendering/ | | |- IViewportHostService.h
│ ├── Passes/ | | |- SceneViewportCameraController.h
│ │ │ ├── Pipelines/ | | |- SceneViewportChrome.cpp
│ │ │ ├── CameraRenderer.h | | |- SceneViewportChrome.h
│ │ │ ├── CameraRenderRequest.h | | |- SceneViewportEditorModes.h
│ │ │ ├── ObjectIdEncoding.h | | |- SceneViewportEditorOverlayData.h
│ │ │ ├── ObjectIdPass.h | | |- SceneViewportHudOverlay.cpp
│ ├── RenderCameraData.h | | |- SceneViewportHudOverlay.h
│ │ │ ├── RenderContext.h | | |- SceneViewportInteractionActions.cpp
│ │ │ ├── RenderMaterialUtility.h | | |- SceneViewportInteractionActions.h
│ ├── RenderPass.h | | |- SceneViewportInteractionFrame.h
│ │ │ ├── RenderPipeline.h | | |- SceneViewportInteractionResolver.cpp
│ │ │ ├── RenderPipelineAsset.h | | |- SceneViewportInteractionResolver.h
│ │ │ ├── RenderResourceCache.h | | |- SceneViewportMath.h
│ │ ├── RenderSceneExtractor.h | | |- SceneViewportMoveGizmo.cpp
│ ├── RenderSceneUtility.h | | |- SceneViewportMoveGizmo.h
│ ├── RenderSurface.h | | |- SceneViewportNavigation.h
│ │ │ ├── SceneRenderRequestPlanner.h | | |- SceneViewportOrientationGizmo.cpp
│ │ ├── SceneRenderRequestUtils.h | | |- SceneViewportOrientationGizmo.h
│ │ │ ├── SceneRenderer.h | | |- SceneViewportOverlayBuilder.cpp
│ │ │ └── VisibleRenderObject.h | | |- SceneViewportOverlayBuilder.h
├── Resources/ | | |- SceneViewportOverlayFrameCache.cpp
│ │ │ ├── AudioClip/ | | |- SceneViewportOverlayFrameCache.h
│ ├── Material/ | | |- SceneViewportOverlayHandleBuilder.h
│ │ │ ├── Mesh/ | | |- SceneViewportOverlayHitTester.h
│ │ ├── Shader/ | | |- SceneViewportOverlayProviders.cpp
│ │ │ └── Texture/ | | |- SceneViewportOverlayProviders.h
├── RHI/ | | |- SceneViewportOverlaySpriteResources.cpp
│ ├── D3D12/ | | |- SceneViewportOverlaySpriteResources.h
│ ├── OpenGL/ | | |- SceneViewportPassSpecs.h
│ └── Vulkan/ | | |- SceneViewportPicker.cpp
├── Scene/ | | |- SceneViewportPicker.h
├── Scripting/ | | |- SceneViewportRenderPlan.h
│ └── Mono/ | | |- SceneViewportResourcePaths.h
│ │ └── Threading/ | | |- SceneViewportRotateGizmo.cpp
├── src/ | | |- SceneViewportRotateGizmo.h
├── Audio/ | | |- SceneViewportScaleGizmo.cpp
├── Components/ | | |- SceneViewportScaleGizmo.h
├── Core/ | | |- SceneViewportShaderPaths.h
│ ├── Asset/ | | |- SceneViewportTransformGizmoCoordinator.cpp
│ ├── Containers/ | | |- SceneViewportTransformGizmoCoordinator.h
│ ├── IO/ | | |- SceneViewportTransformGizmoFrameBuilder.h
│ └── Math/ | | |- ViewportHostRenderFlowUtils.h
├── Debug/ | | |- ViewportHostRenderTargets.h
│ ├── Input/ | | |- ViewportHostService.h
├── Memory/ | | |- ViewportHostSurfaceUtils.h
├── Platform/ | | `- ViewportObjectIdPicker.h
│ │ └── Windows/ | |- Application.cpp
├── Rendering/ | |- Application.h
│ │ ├── Passes/ | |- EditorApp.rc
│ │ └── Pipelines/ | |- EditorResources.h
├── Resources/ | |- Theme.cpp
│ ├── AudioClip/ | |- Theme.h
│ ├── Material/ | `- main.cpp
│ │ │ ├── Mesh/ |- engine/
│ │ ├── Shader/ | |- CMakeLists.txt
│ │ │ └── Texture/ | |- include/
│ ├── RHI/ | | `- XCEngine/
│ ├── D3D12/ | | |- Audio/
│ ├── OpenGL/ | | |- Components/
│ └── Vulkan/ | | |- Core/
│ │ ├── Scene/ | | | |- Asset/
├── Scripting/ | | | |- Containers/
│ └── Mono/ | | | |- IO/
└── Threading/ | | | `- Math/
├── third_party/ | | |- Debug/
├── assimp/ | | |- Input/
├── GLAD/ | | |- Memory/
├── kissfft/ | | |- Platform/
├── renderdoc/ | | | `- Windows/
└── stb/ | | |- Rendering/
└── tools/ | | | |- Passes/
└── renderdoc_parser/ | | | |- Pipelines/
├── managed/ | | | |- CameraRenderer.h
│ ├── CMakeLists.txt | | | |- CameraRenderRequest.h
│ ├── GameScripts/ | | | |- ObjectIdPass.h
└── XCEngine.ScriptCore/ | | | |- RenderPipeline.h
├── mvs/ | | | |- RenderSurface.h
│ ├── 3DGS-Unity/ | | | `- SceneRenderer.h
│ ├── D3D12/ | | |- Resources/
├── Music fluctuations/ | | | |- AudioClip/
│ ├── OpenGL/ | | | |- Material/
│ ├── RenderDoc/ | | | |- Mesh/
│ ├── Res/ | | | |- Shader/
│ ├── ui/ # 早期 ImGui + D3D12 UI 原型,非当前正式 editor | | | `- Texture/
└── VolumeRenderer/ | | |- RHI/
├── project/ | | | |- D3D12/
├── .xceditor/ | | | |- OpenGL/
├── imgui_layout.ini | | | `- Vulkan/
│ └── thumbs/ | | |- Scene/
│ ├── Assets/ | | |- Scripting/
├── Materials/ | | | `- Mono/
├── Models/ | | `- Threading/
└── backpack/ | |- src/ # 与 include/XCEngine 中的主模块一一对应
│ ├── New Folder/ | |- third_party/
│ ├── New Folder 1/ | | |- assimp/
│ ├── Scenes/ | | |- GLAD/
│ │ │ ├── Backpack.xc | | |- kissfft/
│ │ │ └── Main.xc | | |- renderdoc/
│ └── Scripts/ | | `- stb/
│ │ ├── ProjectScriptProbe.cs | `- tools/
│ │ └── Textures/ | `- renderdoc_parser/
│ ├── Library/ |- managed/
│ ├── ArtifactDB/ | |- CMakeLists.txt
│ │ ├── Artifacts/ | |- GameScripts/
│ ├── ScriptAssemblies/ | `- XCEngine.ScriptCore/
│ │ │ ├── GameScripts.dll |- mvs/
│ │ ├── mscorlib.dll | |- 3DGS-Unity/
│ │ │ └── XCEngine.ScriptCore.dll | |- D3D12/
│ └── SourceAssetDB/ | |- Music fluctuations/
│ ├── Assets.meta | |- OpenGL/
└── Project.xcproject | |- RenderDoc/
├── scripts/ | |- Res/
│ └── Run-RendererPhaseRegression.ps1 | |- ui/ # 早期 ImGui + D3D12 UI 原型
├── tests/ | `- VolumeRenderer/
│ ├── CMakeLists.txt |- new_editor/
│ ├── TEST_SPEC.md | |- app/
├── Components/ | | |- Host/
├── Core/ | | |- Application.cpp
│ ├── Asset/ | | |- Application.h
│ │ ├── Containers/ | | `- main.cpp
├── IO/ | |- bin/ # XCUIEditor.exe 输出目录
│ └── Math/ | |- include/
├── Debug/ | | `- XCEditor/
├── Editor/ | | |- Core/
│ ├── Fixtures/ | | `- Widgets/
│ ├── Input/ | |- src/
├── Memory/ | | |- Core/
├── Rendering/ | | |- Platform/
│ │ ├── integration/ | | `- Widgets/
│ │ ├── backpack_lit_scene/ | |- ui/
│ │ │ ├── backpack_scene/ | `- CMakeLists.txt
│ │ │ ├── camera_stack_scene/ |- project/
│ │ │ ├── cull_material_scene/ | |- .xceditor/
│ │ │ ├── depth_sort_scene/ | | |- imgui_layout.ini
│ │ ├── material_state_scene/ | | `- thumbs/
│ │ │ ├── offscreen_scene/ | |- Assets/
│ │ ├── textured_quad_scene/ | | |- Materials/
│ │ │ └── transparent_material_scene/ | | |- Materials.meta
│ └── unit/ | | |- Models/
├── Resources/ | | |- Models.meta
│ ├── AudioClip/ | | |- New Folder.meta
│ ├── Material/ | | |- New Folder 1.meta
│ ├── Mesh/ | | |- New Material.mat
├── Shader/ | | |- New Material.mat.meta
│ │ └── Texture/ | | |- Scenes/
├── RHI/ | | | |- Backpack.xc
│ ├── D3D12/ | | | |- Backpack.xc.meta
│ │ ├── integration/ | | | |- Main.xc
│ │ └── unit/ | | | |- Main.xc.meta
│ ├── integration/ | | | |- NewFolder.meta
│ │ ├── backpack/ | | | `- NewFolder/
│ │ ├── fixtures/ | | |- Scenes.meta
│ │ ├── minimal/ | | |- Scripts/
│ │ │ ├── quad/ | | | |- ProjectScriptProbe.cs
│ │ ├── sphere/ | | | |- ProjectScriptProbe.cs.meta
│ │ │ └── triangle/ | | | |- Textures/
│ ├── OpenGL/ | | | |- Textures.meta
│ │ ├── integration/ | | | |- TickLogProbe.cs
│ │ └── unit/ | | | `- TickLogProbe.cs.meta
│ │ ├── unit/ | | `- Scripts.meta
│ │ └── Vulkan/ | |- Library/
│ │ ├── integration/ | | |- ArtifactDB/
└── unit/ | | | `- artifacts.db
├── Scene/ | | |- Artifacts/
│ ├── Scripting/ | | | `- <bucket>/<artifact-id>/
└── Threading/ | | |- ScriptAssemblies/
├── 参考/ | | | |- GameScripts.dll
├── Fermion/ | | | `- mscorlib.dll
├── TransformGizmo/ | | `- SourceAssetDB/
├── unity editor/ | | `- assets.db
│ ├── unity-editor-icons/ | |- Assets.meta
│ ├── unity-icons/ | `- Project.xcproject
│ └── UnityRuntimeSceneGizmo-master/ |- scripts/
└── .vscode/ | `- Run-RendererPhaseRegression.ps1
|- tests/
| |- CMakeLists.txt
| |- TEST_SPEC.md
| |- Components/
| |- Core/
| | |- Asset/
| | |- Containers/
| | |- IO/
| | `- Math/
| |- Debug/
| |- Editor/
| | |- CMakeLists.txt
| | |- test_action_routing.cpp
| | |- test_application_asset_cache_stub.cpp
| | |- test_builtin_icon_layout_utils.cpp
| | |- test_editor_console_sink.cpp
| | |- test_editor_script_assembly_builder.cpp
| | |- test_editor_script_assembly_builder_utils.cpp
| | |- test_play_session_controller.cpp
| | |- test_play_session_controller_scripting.cpp
| | |- test_scene_viewport_camera_controller.cpp
| | |- test_scene_viewport_chrome.cpp
| | |- test_scene_viewport_interaction_actions.cpp
| | |- test_scene_viewport_interaction_frame.cpp
| | |- test_scene_viewport_interaction_resolver.cpp
| | |- test_scene_viewport_move_gizmo.cpp
| | |- test_scene_viewport_navigation.cpp
| | |- test_scene_viewport_overlay_providers.cpp
| | |- test_scene_viewport_overlay_renderer.cpp
| | |- test_scene_viewport_picker.cpp
| | |- test_scene_viewport_rotate_gizmo.cpp
| | |- test_scene_viewport_scale_gizmo.cpp
| | |- test_scene_viewport_shader_paths.cpp
| | |- test_scene_viewport_transform_gizmo_coordinator.cpp
| | |- test_script_component_editor_utils.cpp
| | |- test_viewport_host_surface_utils.cpp
| | |- test_viewport_object_id_picker.cpp
| | |- test_viewport_render_flow_utils.cpp
| | `- test_viewport_render_targets.cpp
| |- Fixtures/
| | `- Resources/
| |- Input/
| |- Memory/
| |- NewEditor/ # 当前为空的预留测试根目录
| |- Rendering/
| | |- integration/
| | | |- backpack_lit_scene/
| | | |- backpack_scene/
| | | |- camera_stack_scene/
| | | |- cull_material_scene/
| | | |- depth_sort_scene/
| | | |- material_state_scene/
| | | |- offscreen_scene/
| | | |- textured_quad_scene/
| | | `- transparent_material_scene/
| | `- unit/
| |- Resources/
| | |- AudioClip/
| | |- Material/
| | |- Mesh/
| | |- Shader/
| | `- Texture/
| |- RHI/
| | |- D3D12/
| | | |- integration/
| | | `- unit/
| | |- integration/
| | | |- backpack/
| | | |- fixtures/
| | | |- minimal/
| | | |- quad/
| | | |- sphere/
| | | `- triangle/
| | |- OpenGL/
| | | |- integration/
| | | `- unit/
| | |- unit/
| | `- Vulkan/
| | |- integration/
| | `- unit/
| |- Scene/
| |- Scripting/
| |- Threading/
| `- UI/
| |- Core/
| |- Editor/
| |- Runtime/
| `- TEST_SPEC.md
|- 参考/
| |- Fermion/
| |- TransformGizmo/
| |- unity editor/
| |- unity-editor-icons/
| |- unity-icons/
| `- UnityRuntimeSceneGizmo-master/
`- .vscode/
``` ```
## 关键文档入口 ## 关键文档入口
- 协作基线与 coding agent 入口:[AGENT.md](AGENT.md) - 编辑器模块说明:[editor/README.md](editor/README.md)
- 面向引擎实现者和 coding agent 的协作基线:[AGENT.md](AGENT.md)
- API 文档入口:[docs/api/main.md](docs/api/main.md)
- 架构蓝图:[docs/blueprint.md](docs/blueprint.md)
- RHI 基线设计:[docs/plan/end/RHI模块设计与实现/RHI模块总览.md](docs/plan/end/RHI模块设计与实现/RHI模块总览.md) - RHI 基线设计:[docs/plan/end/RHI模块设计与实现/RHI模块总览.md](docs/plan/end/RHI模块设计与实现/RHI模块总览.md)
- 当前 Shader / Material 主线:[docs/plan/Shader与Material系统下一阶段计划.md](docs/plan/Shader与Material系统下一阶段计划.md) - Library 启动与运行时加载主线:[docs/plan/Library启动预热与运行时异步加载混合重构计划_2026-04-04.md](docs/plan/Library启动预热与运行时异步加载混合重构计划_2026-04-04.md)
- Scene viewport overlay 重构:[docs/plan/SceneViewport_Overlay_Gizmo_Rework_Plan.md](docs/plan/SceneViewport_Overlay_Gizmo_Rework_Plan.md) - Editor 当前架构:[docs/plan/Editor架构说明.md](docs/plan/Editor架构说明.md)
- 当前 Shader / Material 主线:[docs/plan/Renderer下一阶段_Unity风格Shader体系正式化计划_2026-04-06.md](docs/plan/Renderer下一阶段_Unity风格Shader体系正式化计划_2026-04-06.md)
- XCUI 总体蓝图:[docs/plan/XCUI完整架构设计与执行计划.md](docs/plan/XCUI完整架构设计与执行计划.md)
- XCUI 阶段状态:[docs/plan/XCUI_Phase_Status_2026-04-05.md](docs/plan/XCUI_Phase_Status_2026-04-05.md)
- 测试规范:[tests/TEST_SPEC.md](tests/TEST_SPEC.md) - 测试规范:[tests/TEST_SPEC.md](tests/TEST_SPEC.md)
## 许可 ## 许可说明
当前仓库根目录未看到独立的顶层许可证文件。涉及第三方库时,请分别遵循其所在目录中的许可证或随附说明。 当前仓库根目录未看到独立的顶层许可证文件。涉及第三方库时,请分别遵循其所在目录中的许可证或随附说明。

View File

@@ -2,199 +2,217 @@
## 目标 ## 目标
本规范用于维护 `XCEngine` 的唯一正式 API 文档树,并约束后续所有模块级重构的工作方式 这份规范面向维护 `XCEngine` API 文档的 coding agent。它的目标不是“批量生成一套看起来完整的文档”而是持续把当前源码、测试和真实调用链路同步到唯一的 canonical API 文档树里
硬性要求 当前仓库已经进入“增量同步”阶段。重点不再是补骨架,而是
1. `docs/api/XCEngine/**` 必须与 `engine/include/XCEngine/**` 保持平行。 - 跟住最新 public header 和 Editor source header 的真实变化
2. canonical API 文档只保留一套;迁移完成后必须删除旧目录与旧入口。 - 清理过期 API 页面和过期叙述
3. 默认情况下,每个 public header 对应一个独立文档目录,每个类型页都使用 `{TypeName}/{TypeName}.md` - 保持 overview / guide / method page 的口径一致
4. 方法页优先使用源码中的原始函数名;不要改成 kebab-case、全小写或其它再命名形式。
5. API 文档必须以源码、实现、测试和真实调用点为依据,禁止只根据名字猜测行为。
6. 对于只承担聚合包含职责的 umbrella header可以并入模块页说明不强制再建一个同名类型目录。
## Canonical 目录结构 ## 当前范围
```text API 文档的正式范围包含两部分:
docs/api/
├── main.md 1. 引擎 public API
├── XCEngine/ - 对齐 `engine/include/XCEngine/**`
│ ├── XCEngine.md 2. Editor source-backed API
├── Debug/ - 对齐 `editor/src/**`
│ ├── Debug.md - canonical 文档入口仍放在 `docs/api/XCEngine/Editor/**`
│ │ ├── Logger/
│ │ │ ├── Logger.md 辅助目录也属于工作流的一部分:
│ │ │ ├── Get.md
│ │ │ ├── Initialize.md - `docs/api/_guides/**`
│ │ └── Log.md - 教程、架构说明、工作流说明
│ │ └── RenderDocCapture/ - `docs/api/_meta/**`
│ ├── RenderDocCapture.md - 审计结果、阶段性状态
│ │ └── BeginCapture.md - `docs/api/_tools/**`
└── ... - 审计、生成、修链脚本
├── _guides/ - `docs/plan/API文档实时同步任务池_2026-04-03.md`
└── Debug/ - 当前多任务并行同步池
└── _meta/ - `README.md` / `editor/README.md` / `AGENT.md`
- 这些不是 canonical API 页,但一旦它们引用 API 模块结构、测试目录或 Editor helper 分层,就属于必须同步的活跃协作文档
## 硬约束
1. `docs/api/XCEngine/**` 是唯一 canonical API 树。
2. 文档必须以“当前 header + 当前实现 + 当前测试 + 当前真实调用点”为依据,不能按旧文档或命名猜行为。
3. 删除的 API 页面要一起删除,相关交叉链接也必须一起清理。
4. 方法页优先使用源码中的原始函数名;不要擅自改成 kebab-case 或小写别名。
5. 不要把“设计意图”写成“当前实现行为”。
6. 不要为已经删除的 API 保留默认兼容入口页,除非任务明确要求。
7. `rebuild-status.md` 以审计脚本输出为准并发场景下stdout 比旧文件内容更可信。
8. 只收口活跃文档;`docs/plan/used/**``docs/used/**` 等归档材料默认保留历史写法,不要为了“顺手统一”去重写归档。
9. Windows 工作树里的路径大小写按真实目录名写,例如 `tests/Editor/``tests/Core/``tests/Scripting/`,不要继续传播 `tests/editor/``tests/core/` 之类的历史噪音。
## 工作流
### 1. 开工前先看两份文件
- 任务池:
- `docs/plan/API文档实时同步任务池_2026-04-03.md`
- 最新审计:
- `docs/api/_meta/rebuild-status.md`
如果任务池和工作树不一致,以当前源码和重新执行审计后的结果为准。
如果 `docs/plan/` 下出现日期更晚的 API 相关计划或归档文件,优先读取更新日期更晚的文件,再判断当前任务池是否已经转入 `docs/plan/used/`
如果工作内容会改到 `README.md``editor/README.md``AGENT.md`
- 先对照真实工作树、`Get-ChildItem` 输出和当前测试目录
- 再改目录树与模块说明
- 不要沿用旧摘要、旧计划里的目录快照
### 2. 认领规则
- 一次只认领一个任务块。
- 先把任务状态改成 `DOING`,再写认领人。
- 只修改该任务块的写入范围。
- 如果发现新的失配,但不属于当前任务块,向任务池追加新任务,不顺手扩写。
### 3. 写文档前的取证
至少完成下面四步:
1. 读对应 header
2. 读对应 `.cpp` 或内联实现
3. 搜测试和真实调用点
4. 确认生命周期、线程语义、失败路径、所有权、平台限制
如果是 Editor source-backed API至少额外确认两类锚点
1. `tests/Editor/` 下是否已有对应单测
2. `SceneViewPanel.cpp``ViewportHostService.*` 或其他真实上层调用链是否已经切到新 helper
落文前至少能回答这些问题:
- 这个类型或函数解决什么问题,边界在哪里?
- 调用前需要什么前置条件?
- 失败时返回什么,或者会不会静默 no-op
- 谁拥有对象,谁负责释放资源?
- 当前实现是完整能力、轻量封装、stub还是占位入口
### 4. 改完后的收口
必须重新执行:
```powershell
python -B docs/api/_tools/audit_api_docs.py
``` ```
说明 至少关注这些指标
- `docs/api/XCEngine/**` 是唯一 canonical API 树。 - `Invalid header refs`
- `docs/api/_guides/**` 用于概念、教程、设计理念和工作流说明,不是第二套 API 树。 - `Invalid source refs`
- `README.md` 不用于 canonical 模块索引页;模块索引页统一使用 `{DirName}.md` - `Broken .md links`
- `Old template pages`
- `Flat header pages`
- `Stale editor doc tokens`
- `Stale editor canonical pages`
## 强制命名规则 如果审计没回绿,不算完成。
### 1. 目录索引页 ## Canonical 目录规则
- 根索引页:`docs/api/XCEngine/XCEngine.md` ### 1. 模块总览页
- 模块索引页:`docs/api/XCEngine/{ModuleName}/{ModuleName}.md`
- 子模块索引页:`docs/api/XCEngine/{ModuleName}/{SubmoduleName}/{SubmoduleName}.md` - 根入口:
- `docs/api/main.md`
- API 根页:
- `docs/api/XCEngine/XCEngine.md`
- 模块页:
- `docs/api/XCEngine/{ModuleName}/{ModuleName}.md`
- 子模块页:
- `docs/api/XCEngine/{ModuleName}/{SubmoduleName}/{SubmoduleName}.md`
示例: 示例:
- `docs/api/XCEngine/Debug/Debug.md`
- `docs/api/XCEngine/Core/Core.md` - `docs/api/XCEngine/Core/Core.md`
- `docs/api/XCEngine/RHI/D3D12/D3D12.md` - `docs/api/XCEngine/Core/Asset/Asset.md`
- `docs/api/XCEngine/Rendering/Passes/Passes.md`
- `docs/api/XCEngine/Editor/Viewport/Viewport.md`
### 2. 类型目录 ### 2. Header / source-backed 目录
- 每个 public header 对应一个独立文件夹。 当前不是“每个类型再套一层目录”,而是:
- 文件夹名必须与 header stem 或主要类型名一致。
- 保留源码中的大小写,不做风格改写。 - 每个 public header 或 Editor source header 对应一个文档目录
- 如果 header 只是模块聚合入口,不声明独立类型,可以直接并入模块页,不单独建文件夹。 - 该目录内放主类型页、辅助类型页和方法页
示例: 示例:
- `docs/api/XCEngine/Debug/Logger/` ```text
- `docs/api/XCEngine/Core/Asset/ResourceManager/` docs/api/XCEngine/Core/Asset/ResourceManager/
- `docs/api/XCEngine/RHI/D3D12/D3D12Device/` ├── ResourceManager.md
├── Load.md
├── LoadAsync.md
├── RefreshProjectAssets.md
├── RebuildProjectAssetCache.md
└── GetProjectLibraryRoot.md
```
### 3. 类型总览页 多类型 / helper 同头文件示例:
- 固定为 `{TypeName}/{TypeName}.md` ```text
- 不允许把类型总览页直接平铺在模块目录中 docs/api/XCEngine/Editor/Viewport/SceneViewportRenderPlan/
├── SceneViewportRenderPlan.md
├── SceneViewportRenderPlanBuildResult.md
├── BuildSceneViewportRenderPlan.md
└── ApplySceneViewportRenderPlan.md
```
### 4. 方法详情页 ### 3. umbrella header 例外
- 方法页放在所属类型目录内。 如果一个 header 只是聚合入口,通常不单独建同名类型页,直接并入模块页:
- 文件名优先使用原函数名。
- 重载共享同一页,在页内按签名分节说明。
示例: - 文件主要由 `#include` 组成
- 不声明独立 class / struct / enum / function family
- 单独建页只会制造重复入口
- `Get.md` ## 命名规则
- `Initialize.md`
- `SetCaptureFilePath.md`
- `LoadSceneAsync.md`
### 5. 特殊命名 ### 1. 主页面
- 构造函数:`Constructor.md` - 主类型页通常用主类型名:
- 析构函数:`Destructor.md` - `ResourceManager.md`
- 运算符使用可读的 PascalCase 名称 - `BuiltinInfiniteGridPass.md`
- helper 类型页直接用真实类型名:
- `ImportedAsset.md`
- `LookupSnapshot.md`
建议映射: ### 2. 方法页
- `operator=` -> `OperatorAssign.md` - 用真实函数名:
- `operator+=` -> `OperatorPlusAssign.md` - `Initialize.md`
- `operator[]` -> `OperatorSubscript.md` - `TryResolveAssetPath.md`
- `operator()` -> `OperatorCall.md` - `BuildInfiniteGridParameters.md`
## 写作前的取证流程 重载共享同一页,在页内按签名分节说明。
在编写任何 API 页之前,必须完成下面的最小取证: ### 3. 特殊命名
1. 阅读对应 public header。 - 构造函数:
2. 阅读对应 `.cpp` 或内联实现。 - `Constructor.md`
3. 搜索测试、示例和真实调用点。 - 析构函数:
4. 确认生命周期、线程语义、所有权、失败路径和平台限制。 - `Destructor.md`
- 运算符:
至少回答以下问题后才能落文: - `operator=` -> `OperatorAssign.md`
- `operator[]` -> `OperatorSubscript.md`
- 这个类型解决什么问题,边界在哪里? - `operator()` -> `OperatorCall.md`
- 调用前需要什么前置条件?
- 调用失败时返回什么,或者会静默失败?
- 谁拥有对象,谁负责释放资源?
- 多线程下哪些调用安全,哪些只能在初始化阶段使用?
- 当前实现是不是完整的?有没有空实现、占位实现或只做轻量封装?
禁止行为:
- 只根据 `Get``Create``Set` 之类的前缀写模板句。
- 把“设计意图”当成“当前实现行为”来写。
- 把测试里假设成立的场景,误写成通用保证。
## umbrella header 例外规则
以下情况通常应视为模块聚合头,而不是单独类型页:
- 头文件主要由一组 `#include` 组成。
- 不声明独立类、结构体、枚举或函数族。
- 名称与模块目录同名,单独建页会造成 `Debug/Debug.md` 这类重复入口。
处理方式:
- 在模块页中增加“聚合头文件”或“包含入口”小节。
- 使用 `**头文件**: \`...\`` 保留头文件覆盖记录。
- 不再额外创建 `{HeaderStem}/{HeaderStem}.md`
## 契约分层规则
文档必须明确区分下面三层信息:
### 1. 接口契约
来自 public header属于使用者可以依赖的 API 形状。
例如:
- 函数签名
- 参数和返回值
- 可见的数据结构
- 明确暴露的枚举值和宏
### 2. 当前实现行为
来自 `.cpp`、内联实现、测试和调用点,描述当前版本的真实行为。
例如:
- 是否自动初始化
- 是否加锁
- 是否会写日志、刷新文件、拉起窗口焦点
- 是否只是 no-op 或 stub
这一层必须使用明确表述,例如:
- “当前实现中……”
- “按 `engine/src/...` 的实现……”
- “当前版本会……”
### 3. 合理推断
只在确实有必要时使用,而且必须标明是推断。
例如:
- “从 API 形状看,设计上显然是为后续 Chrome Trace 导出预留扩展点。”
如果不能证明,就不要写。
## 页面职责 ## 页面职责
### 1. 模块页 / 子模块页 ### 1. 模块页
负责 必须说明
- 说明模块职责、边界和典型使用场景 - 模块职责
- 列出子目录与 public headers - 与相邻模块的边界
- 给出与相邻模块的关系 - 典型使用链路
- 链接相关 guide - 关键入口
负责: 要在模块页里平铺所有方法细节。
- 展开所有方法细节
- 重复 header 全量声明
### 2. 类型页 ### 2. 类型页
@@ -202,212 +220,122 @@ docs/api/
- 命名空间 - 命名空间
- 类型分类 - 类型分类
- 头文件 - `头文件``源文件`
- 角色概述 - 角色概述
- 生命周期 - 生命周期
- 线程语义 - 线程语义
- 所有权 / 资源管理方式 - 所有权 / 资源管理方式
- 当前实现限制 - 当前实现限制
- 相关方法页、guide 页的跳转 - 相关方法与相关 guide
如果类型是枚举或结构体,还应补充: 如果`struct` / `enum`,还要写清字段或枚举值的实际语义。
- 字段或枚举值说明
- 值之间的语义关系
- 典型使用方式
### 3. 方法页 ### 3. 方法页
必须包含 必须写清
- 准确签名 - 准确签名
- 调用目的 - 调用目的
- 前置条件 - 前置条件
- 参数说明 - 当前实现行为
- 返回值说明 - 返回值
- 副作用 - 副作用
- 线程语义
- 失败路径或 no-op 条件 - 失败路径或 no-op 条件
- 最小可信示例 - 线程语义
- 真实调用点或测试锚点
方法页不能只写“获取对象”“设置状态”这种空描述。 不能只写“获取对象”“设置状态”这种空描述。
## 内容深度要求 ## 写法规则
### 1. 解释“是什么” ### 1. 区分三层信息
说明类型或方法的职责,而不是简单复述名字。 文档里要明确区分:
### 2. 解释“怎么用” - 接口契约
- 来自 header可被调用方依赖
- 当前实现行为
- 来自 `.cpp`、测试和调用链
- 合理推断
- 只有必要时才写,并明确标注是推断
给出最小可运行或最小可信的使用顺序,让用户知道放在初始化、运行时还是销毁阶段。 推荐措辞:
### 3. 解释“为什么这样设计 - “当前实现中……
- “按 `engine/src/...` 的实现……”
- “测试 `tests/...` 当前验证了……”
结合引擎架构解释: ### 2. 优先写真实链路
- 为什么做成 singleton、service、interface、sink、builder、handle 如果一个 API 真正只是更大链路中的一环,要把链路写出来。
- 这样做的收益是什么
- 有哪些代价或约束
### 4. 解释“当前实现做到哪一步” 示例:
商业级 API 文档不能假装所有接口都同样成熟。 - `ResourceManager`
- 不只写“负责资源加载”
- 要写清 `AssetImportService -> ProjectAssetIndex -> loader` 的真实路径
- `SceneViewportRenderPlan`
- 不只写“构建后处理 plan”
- 要写清它如何给 Scene View 组装 `postScenePasses` / `overlayPasses`
对于未完成能力,必须明确说明: ### 3. 明确不成熟部分
- 当前是占位接口 对未完成能力要直接写明:
- 当前只有基础实现
- 当前只覆盖某个平台 / 某条后端路径
## 教程与概念页规范 - 当前是 stub
- 当前只支持某个平台
- 当前只覆盖某条 backend 路径
- 当前仍要求调用方手动轮询或手动 shutdown
当某个模块仅靠 API 页不足以让用户理解时,应增加 `_guides` 不要把不成熟接口包装成成熟系统
## Guide / Overview 规则
`_guides` 不是第二套 API 参考,而是解释:
- 为什么这样组织模块
- 推荐从哪里开始读
- 典型工作流是什么
- 与 Unity / Unreal 等常见心智模型的关系
适合写 guide 的内容: 适合写 guide 的内容:
- 前置知识 - 架构图景
- 架构设计理念 - 推荐使用顺序
- 推荐工作流 - 设计权衡
- 和 Unity / Unreal / RenderDoc 等常见工具的概念对照 - 常见误区
- 最佳实践与反模式
guide 页不是第二套 API 参考,它们负责回答 不适合
- 为什么要这样组织模块 - 重复抄一遍类型页和方法页
- 用户第一次接触时该从哪里开始 - 延续已经过期的旧工作流
- 这套 API 与常见引擎的对应关系是什么
guide 页应尽量包含: ## 常见失误
- 问题背景 - 按名字猜 API 行为,不看实现和测试
- 设计目标 - 保留已经删除的 API 页面或链接
- 推荐流程 - overview 还在传播旧心智,但类型页已经改新了
- 优点与代价 - 把 helper / wrapper 当成独立大系统来写
- 与现有 API 页的链接 - 把 Editor source-backed API 当成 public header 处理,漏掉 `源文件` 语义
- 审计没跑或没回绿就宣布完成
- README / AGENT / editor README 的目录树还停留在旧快照,和当前工作树脱节
- Windows 上真实已有新测试,但类型页还在写“没有独立单元测试”
## Unity 风格的解释性要求 ## 推荐命令
当模块涉及常见引擎概念时,可以增加 Unity 对照,但必须克制且准确。 ```powershell
rg --files docs/api/XCEngine
推荐写法: rg --files tests/Editor
rg -n "SymbolName" engine/include engine/src editor/src tests docs/api
- “可以把 `Logger` 理解为比 Unity Console 更底层的日志分发中心。” python -B docs/api/_tools/audit_api_docs.py
- “当前 `Profiler` 只覆盖轻量 CPU 埋点,不等同于 Unity Profiler 的完整时间线分析。”
-`RenderDocCapture` 更接近引擎内置的 RenderDoc 工作流桥接,而不是 Unity Frame Debugger 的替代品。”
禁止写法:
- “和 Unity 完全一样”
- “等价于某商业引擎的完整系统”
## 页面模板
### 1. 模块页模板
```markdown
# {DirName}
**命名空间**: `{Namespace}`
**类型**: `module` / `submodule` / `module-root`
**描述**: {一句话说明当前目录职责}
## 概述
{解释职责边界、典型场景和相邻模块关系}
## 设计要点
- {要点 1}
- {要点 2}
## 头文件
- [TypeA](TypeA/TypeA.md) - `TypeA.h`
- [TypeB](TypeB/TypeB.md) - `TypeB.h`
## 相关指南
- [GuideA](../../_guides/.../GuideA.md)
``` ```
### 2. 类型页模板 ## 一个最小完成定义
```markdown 一次 API 文档任务只有同时满足下面条件才算完成:
# {TypeName}
**命名空间**: `{Namespace}` - 对应源码、测试、调用链已经核对
- 文档页内容已经改到当前实现
**类型**: `class` / `class (abstract)` / `class (singleton)` / `struct` / `enum class` - 过期页面和交叉链接已经清理
- 任务池记录已最小更新
**头文件**: `XCEngine/.../{Header}.h` - 审计脚本重新执行且结果全绿
**描述**: {一句话说明}
## 概述
{说明角色、状态、边界、典型使用方式}
## 生命周期
- {初始化与销毁方式}
## 线程语义
- {线程安全说明}
## 公开成员
| 成员 | 说明 |
|------|------|
| [Initialize](Initialize.md) | {说明} |
| [Shutdown](Shutdown.md) | {说明} |
```
### 3. 方法页模板
```markdown
# {TypeName}::{MethodName}
{一句话说明方法职责}
```cpp
{完整签名}
```
## 行为说明
{说明前置条件、后置状态、副作用和当前实现细节}
## 参数
- `param` - {描述}
## 返回值
- `{Type}` - {描述}
## 线程语义
- {线程安全、只建议初始化阶段调用、或必须同线程配对等}
## 示例
```cpp
{}
```
```
## 验收清单
- `docs/api/XCEngine/**` 与 `engine/include/XCEngine/**` 目录平行
- canonical 树下没有模块级 `README.md`
- 每个 public header 都有对应类型目录
- 每个类型总览页都位于 `{TypeName}/{TypeName}.md`
- 方法页使用原函数名或规范化运算符名
- 所有链接都指向真实存在的 `.md` 页面
- 文档中明确区分接口契约、当前实现和合理推断
- 重要模块拥有必要的 guide 页
- 重要限制、stub、平台条件和线程语义都已写清

View File

@@ -1,31 +1,26 @@
# AudioMixer::AddEffect # AudioMixer::AddEffect
添加元素或建立关联。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void AddEffect(IAudioEffect* effect); void AddEffect(IAudioEffect* effect);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_effects`
- `effect` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_effects`
- 当前实现会调用 `push_back`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::AddEffect(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# AudioMixer::ClearEffects # AudioMixer::ClearEffects
清空内部数据。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void ClearEffects(); void ClearEffects();
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_effects`
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_effects`
- 当前实现会调用 `clear`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::ClearEffects(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,28 +1,25 @@
# AudioMixer::AudioMixer() # AudioMixer::AudioMixer()
构造对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
AudioMixer(); AudioMixer();
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 执行该公开方法对应的当前实现。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,29 +1,25 @@
# AudioMixer::~AudioMixer() # AudioMixer::~AudioMixer()
销毁对象并释放相关资源。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
~AudioMixer(); ~AudioMixer();
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 当前实现为空
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前函数体为空。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# AudioMixer::Get3DParams # AudioMixer::Get3DParams
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
const Audio3DParams& Get3DParams() const; const Audio3DParams& Get3DParams() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_3DParams`
**返回:** `const Audio3DParams&` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_3DParams`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::Get3DParams(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [Set3DParams](Set3DParams.md)

View File

@@ -1,31 +1,28 @@
# AudioMixer::GetChannelVolume # AudioMixer::GetChannelVolume
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
float GetChannelVolume(AudioChannel channel) const; float GetChannelVolume(AudioChannel channel) const;
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_channelVolumes`
- `channel` - 参数语义详见头文件声明。
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 会更新 `m_channelVolumes`
- 当前实现会调用 `find``end`
```cpp - 包含条件分支,并可能提前返回。
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::GetChannelVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [SetChannelVolume](SetChannelVolume.md)

View File

@@ -1,30 +1,26 @@
# AudioMixer::GetOutputMixer # AudioMixer::GetOutputMixer
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
AudioMixer* GetOutputMixer() const; AudioMixer* GetOutputMixer() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_outputMixer` 当前值
**返回:** `AudioMixer*` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_outputMixer` 当前值。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::GetOutputMixer(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [SetOutputMixer](SetOutputMixer.md)

View File

@@ -1,30 +1,26 @@
# AudioMixer::GetVolume # AudioMixer::GetVolume
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
float GetVolume() const; float GetVolume() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_volume` 当前值
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_volume` 当前值。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::GetVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [SetVolume](SetVolume.md)

View File

@@ -1,30 +1,25 @@
# AudioMixer::IsMute # AudioMixer::IsMute
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
bool IsMute() const; bool IsMute() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_mute` 当前值
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_mute` 当前值。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::IsMute(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,33 +1,25 @@
# AudioMixer::ProcessAudio # AudioMixer::ProcessAudio
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels); void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `buffer` - 参数语义详见头文件声明。
- `sampleCount` - 参数语义详见头文件声明。
- `channels` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 执行该公开方法对应的当前实现。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::ProcessAudio(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioMixer::RemoveEffect # AudioMixer::RemoveEffect
移除元素或解除关联。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void RemoveEffect(IAudioEffect* effect); void RemoveEffect(IAudioEffect* effect);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_effects`
- `effect` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_effects`
- 当前实现会调用 `find``begin``end``erase`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::RemoveEffect(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioMixer::Set3DParams # AudioMixer::Set3DParams
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void Set3DParams(const Audio3DParams& params); void Set3DParams(const Audio3DParams& params);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `params` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 执行该公开方法对应的当前实现。
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::Set3DParams(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [Get3DParams](Get3DParams.md)

View File

@@ -1,32 +1,27 @@
# AudioMixer::SetChannelVolume # AudioMixer::SetChannelVolume
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void SetChannelVolume(AudioChannel channel, float volume); void SetChannelVolume(AudioChannel channel, float volume);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_channelVolumes`
- `channel` - 参数语义详见头文件声明。
- `volume` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_channelVolumes`
- 当前实现会调用 `find``end``max``min`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::SetChannelVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [GetChannelVolume](GetChannelVolume.md)

View File

@@ -1,31 +1,25 @@
# AudioMixer::SetMute # AudioMixer::SetMute
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void SetMute(bool mute); void SetMute(bool mute);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_mute`
- `mute` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_mute`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::SetMute(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioMixer::SetOutputMixer # AudioMixer::SetOutputMixer
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void SetOutputMixer(AudioMixer* mixer); void SetOutputMixer(AudioMixer* mixer);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_outputMixer`
- `mixer` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_outputMixer`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::SetOutputMixer(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [GetOutputMixer](GetOutputMixer.md)

View File

@@ -1,31 +1,27 @@
# AudioMixer::SetVolume # AudioMixer::SetVolume
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioMixer.h`
## 签名
```cpp ```cpp
void SetVolume(float volume); void SetVolume(float volume);
``` ```
该方法声明于 `XCEngine/Audio/AudioMixer.h`,当前页面用于固定 `AudioMixer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_volume`
- `volume` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_volume`
- 当前实现会调用 `max``min`
```cpp
#include <XCEngine/Audio/AudioMixer.h>
void Example() {
XCEngine::Audio::AudioMixer object;
// 根据上下文补齐参数后调用 AudioMixer::SetVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioMixer.md) - [AudioMixer](AudioMixer.md)
- [返回模块目录](../Audio.md) - [GetVolume](GetVolume.md)

View File

@@ -1,29 +1,25 @@
# AudioSystem::Get # AudioSystem::Get
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
static AudioSystem& Get(); static AudioSystem& Get();
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `instance`
**返回:** `AudioSystem&` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `instance`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
auto& instance = XCEngine::Audio::AudioSystem::Get();
(void)instance;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,25 @@
# AudioSystem::GetAvailableDevices # AudioSystem::GetAvailableDevices
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void GetAvailableDevices(std::vector<std::string>& devices); void GetAvailableDevices(std::vector<std::string>& devices);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `GetAvailableDevices` 协同流程。
- `devices` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `GetAvailableDevices`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetAvailableDevices(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,27 @@
# AudioSystem::GetBackend # AudioSystem::GetBackend
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
IAudioBackend* GetBackend() const; IAudioBackend* GetBackend() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_backend`
**返回:** `IAudioBackend*` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 会更新 `m_backend`
- 当前实现会调用 `get`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetBackend(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md) - [SetBackend](SetBackend.md)

View File

@@ -1,30 +1,26 @@
# AudioSystem::GetCurrentDevice # AudioSystem::GetCurrentDevice
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
std::string GetCurrentDevice() const; std::string GetCurrentDevice() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `GetDeviceName` 协同流程
**返回:** `std::string` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 当前实现会调用 `GetDeviceName`
- 包含条件分支,并可能提前返回。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetCurrentDevice(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# AudioSystem::GetListenerPosition # AudioSystem::GetListenerPosition
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
const Math::Vector3& GetListenerPosition() const; const Math::Vector3& GetListenerPosition() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_listenerPosition` 当前值
**返回:** `const Math::Vector3&` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_listenerPosition` 当前值。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetListenerPosition(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# AudioSystem::GetListenerRotation # AudioSystem::GetListenerRotation
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
const Math::Quaternion& GetListenerRotation() const; const Math::Quaternion& GetListenerRotation() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_listenerRotation` 当前值
**返回:** `const Math::Quaternion&` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_listenerRotation` 当前值。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetListenerRotation(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# AudioSystem::GetListenerVelocity # AudioSystem::GetListenerVelocity
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
const Math::Vector3& GetListenerVelocity() const; const Math::Vector3& GetListenerVelocity() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_listenerVelocity` 当前值
**返回:** `const Math::Vector3&` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_listenerVelocity` 当前值。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetListenerVelocity(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md) - [SetListenerVelocity](SetListenerVelocity.md)

View File

@@ -1,30 +1,27 @@
# AudioSystem::GetMasterVolume # AudioSystem::GetMasterVolume
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
float GetMasterVolume() const; float GetMasterVolume() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `GetMasterVolume` 协同流程
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 当前实现会调用 `GetMasterVolume`
- 包含条件分支,并可能提前返回。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetMasterVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md) - [SetMasterVolume](SetMasterVolume.md)

View File

@@ -1,30 +1,25 @@
# AudioSystem::GetStats # AudioSystem::GetStats
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
const Stats& GetStats() const; const Stats& GetStats() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_stats` 当前值
**返回:** `const Stats&` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_stats` 当前值。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::GetStats(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioSystem::Initialize # AudioSystem::Initialize
初始化内部状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void Initialize(const AudioConfig& config); void Initialize(const AudioConfig& config);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_backend`
- `config` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_backend`
- 当前实现会调用 `Shutdown``Initialize``Start``reset`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::Initialize(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# AudioSystem::IsMuted # AudioSystem::IsMuted
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
bool IsMuted() const; bool IsMuted() const;
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `IsMuted` 协同流程
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 当前实现会调用 `IsMuted`
- 包含条件分支,并可能提前返回。
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::IsMuted(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,33 +1,25 @@
# AudioSystem::ProcessAudio # AudioSystem::ProcessAudio
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels); void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `ProcessAudio` 协同流程。
- `buffer` - 参数语义详见头文件声明。
- `sampleCount` - 参数语义详见头文件声明。
- `channels` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `ProcessAudio`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::ProcessAudio(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioSystem::RegisterSource # AudioSystem::RegisterSource
注册对象、回调或映射。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void RegisterSource(Components::AudioSourceComponent* source); void RegisterSource(Components::AudioSourceComponent* source);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_activeSources`
- `source` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_activeSources`
- 当前实现会调用 `push_back`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::RegisterSource(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,27 @@
# AudioSystem::SetBackend # AudioSystem::SetBackend
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void SetBackend(std::unique_ptr<IAudioBackend> backend); void SetBackend(std::unique_ptr<IAudioBackend> backend);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_backend`
- `backend` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_backend`
- 当前实现会调用 `move`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::SetBackend(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md) - [GetBackend](GetBackend.md)

View File

@@ -1,31 +1,25 @@
# AudioSystem::SetDevice # AudioSystem::SetDevice
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void SetDevice(const std::string& deviceName); void SetDevice(const std::string& deviceName);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `SetDevice` 协同流程。
- `deviceName` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `SetDevice`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::SetDevice(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,32 +1,25 @@
# AudioSystem::SetListenerTransform # AudioSystem::SetListenerTransform
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void SetListenerTransform(const Math::Vector3& position, const Math::Quaternion& rotation); void SetListenerTransform(const Math::Vector3& position, const Math::Quaternion& rotation);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `position` - 参数语义详见头文件声明。
- `rotation` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_listenerPosition``m_listenerRotation`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::SetListenerTransform(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioSystem::SetListenerVelocity # AudioSystem::SetListenerVelocity
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void SetListenerVelocity(const Math::Vector3& velocity); void SetListenerVelocity(const Math::Vector3& velocity);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_listenerVelocity`
- `velocity` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_listenerVelocity`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::SetListenerVelocity(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md) - [GetListenerVelocity](GetListenerVelocity.md)

View File

@@ -1,31 +1,26 @@
# AudioSystem::SetMasterVolume # AudioSystem::SetMasterVolume
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void SetMasterVolume(float volume); void SetMasterVolume(float volume);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `SetMasterVolume` 协同流程。
- `volume` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `SetMasterVolume`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::SetMasterVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md) - [GetMasterVolume](GetMasterVolume.md)

View File

@@ -1,31 +1,25 @@
# AudioSystem::SetMuted # AudioSystem::SetMuted
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void SetMuted(bool muted); void SetMuted(bool muted);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `SetMuted` 协同流程。
- `muted` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `SetMuted`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::SetMuted(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# AudioSystem::Shutdown # AudioSystem::Shutdown
关闭并清理内部状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void Shutdown(); void Shutdown();
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `Stop``Shutdown``reset` 协同流程
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `Stop``Shutdown``reset``clear`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::Shutdown(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioSystem::UnregisterSource # AudioSystem::UnregisterSource
取消注册对象、回调或映射。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void UnregisterSource(Components::AudioSourceComponent* source); void UnregisterSource(Components::AudioSourceComponent* source);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_activeSources`
- `source` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_activeSources`
- 当前实现会调用 `find``begin``end``erase`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::UnregisterSource(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# AudioSystem::Update # AudioSystem::Update
更新运行时状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/AudioSystem.h`
## 签名
```cpp ```cpp
void Update(float deltaTime); void Update(float deltaTime);
``` ```
该方法声明于 `XCEngine/Audio/AudioSystem.h`,当前页面用于固定 `AudioSystem` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_deltaTime`
- `deltaTime` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_deltaTime`
- 当前实现会调用 `IsRunning``GetConfig``mixBuffer``IsEnabled``IsPlaying`
```cpp
#include <XCEngine/Audio/AudioSystem.h>
void Example() {
XCEngine::Audio::AudioSystem object;
// 根据上下文补齐参数后调用 AudioSystem::Update(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](AudioSystem.md) - [AudioSystem](AudioSystem.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,28 +1,25 @@
# Equalizer::Equalizer() # Equalizer::Equalizer()
构造对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
Equalizer(); Equalizer();
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 构造 `Equalizer` 实例
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 具体定义位于 `engine/src/Audio/Equalizer.cpp`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,29 +1,25 @@
# Equalizer::~Equalizer() # Equalizer::~Equalizer()
销毁对象并释放相关资源。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
~Equalizer() override; ~Equalizer() override;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 当前实现为空
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前函数体为空。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# Equalizer::GetBandCount # Equalizer::GetBandCount
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
uint32 GetBandCount() const; uint32 GetBandCount() const;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_bandCount` 当前值
**返回:** `uint32` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_bandCount` 当前值。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::GetBandCount(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [SetBandCount](SetBandCount.md)

View File

@@ -1,31 +1,26 @@
# Equalizer::GetBandFrequency # Equalizer::GetBandFrequency
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
float GetBandFrequency(uint32 band) const; float GetBandFrequency(uint32 band) const;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `band` - 参数语义详见头文件声明。
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 包含条件分支,并可能提前返回。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::GetBandFrequency(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [SetBandFrequency](SetBandFrequency.md)

View File

@@ -1,31 +1,26 @@
# Equalizer::GetBandGain # Equalizer::GetBandGain
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
float GetBandGain(uint32 band) const; float GetBandGain(uint32 band) const;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `band` - 参数语义详见头文件声明。
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 包含条件分支,并可能提前返回。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::GetBandGain(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [SetBandGain](SetBandGain.md)

View File

@@ -1,31 +1,26 @@
# Equalizer::GetBandQ # Equalizer::GetBandQ
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
float GetBandQ(uint32 band) const; float GetBandQ(uint32 band) const;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `band` - 参数语义详见头文件声明。
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 包含条件分支,并可能提前返回。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::GetBandQ(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [SetBandQ](SetBandQ.md)

View File

@@ -1,30 +1,26 @@
# Equalizer::GetWetMix # Equalizer::GetWetMix
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
float GetWetMix() const override; float GetWetMix() const override;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_wetMix` 当前值
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_wetMix` 当前值。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::GetWetMix(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [SetWetMix](SetWetMix.md)

View File

@@ -1,30 +1,25 @@
# Equalizer::IsEnabled # Equalizer::IsEnabled
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
bool IsEnabled() const override; bool IsEnabled() const override;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_enabled` 当前值
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_enabled` 当前值。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::IsEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,33 +1,25 @@
# Equalizer::ProcessAudio # Equalizer::ProcessAudio
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels) override; void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels) override;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行该公开方法对应的当前实现。
- `buffer` - 参数语义详见头文件声明。
- `sampleCount` - 参数语义详见头文件声明。
- `channels` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 包含 `nullptr` 相关分支。
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::ProcessAudio(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,27 @@
# Equalizer::SetBandCount # Equalizer::SetBandCount
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void SetBandCount(uint32 count); void SetBandCount(uint32 count);
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_bandCount`
- `count` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_bandCount`
- 当前实现会调用 `resize`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::SetBandCount(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [GetBandCount](GetBandCount.md)

View File

@@ -1,32 +1,26 @@
# Equalizer::SetBandFrequency # Equalizer::SetBandFrequency
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void SetBandFrequency(uint32 band, float frequency); void SetBandFrequency(uint32 band, float frequency);
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `max``min``ComputeCoefficients` 协同流程。
- `band` - 参数语义详见头文件声明。
- `frequency` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `max``min``ComputeCoefficients`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::SetBandFrequency(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [GetBandFrequency](GetBandFrequency.md)

View File

@@ -1,32 +1,26 @@
# Equalizer::SetBandGain # Equalizer::SetBandGain
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void SetBandGain(uint32 band, float gainDb); void SetBandGain(uint32 band, float gainDb);
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `max``min``ComputeCoefficients` 协同流程。
- `band` - 参数语义详见头文件声明。
- `gainDb` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `max``min``ComputeCoefficients`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::SetBandGain(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [GetBandGain](GetBandGain.md)

View File

@@ -1,32 +1,26 @@
# Equalizer::SetBandQ # Equalizer::SetBandQ
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void SetBandQ(uint32 band, float q); void SetBandQ(uint32 band, float q);
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `max``min``ComputeCoefficients` 协同流程。
- `band` - 参数语义详见头文件声明。
- `q` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `max``min``ComputeCoefficients`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::SetBandQ(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [GetBandQ](GetBandQ.md)

View File

@@ -1,31 +1,25 @@
# Equalizer::SetEnabled # Equalizer::SetEnabled
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void SetEnabled(bool enabled) override; void SetEnabled(bool enabled) override;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_enabled`
- `enabled` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_enabled`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::SetEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,27 @@
# Equalizer::SetWetMix # Equalizer::SetWetMix
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/Equalizer.h`
## 签名
```cpp ```cpp
void SetWetMix(float wetMix) override; void SetWetMix(float wetMix) override;
``` ```
该方法声明于 `XCEngine/Audio/Equalizer.h`,当前页面用于固定 `Equalizer` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_wetMix`
- `wetMix` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_wetMix`
- 当前实现会调用 `max``min`
```cpp
#include <XCEngine/Audio/Equalizer.h>
void Example() {
XCEngine::Audio::Equalizer object;
// 根据上下文补齐参数后调用 Equalizer::SetWetMix(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](Equalizer.md) - [Equalizer](Equalizer.md)
- [返回模块目录](../Audio.md) - [GetWetMix](GetWetMix.md)

View File

@@ -1,41 +1,26 @@
# FFTFilter::FFTFilter() # FFTFilter::FFTFilter()
构造对象。 **命名空间**: `XCEngine::Audio`
该方法在 `XCEngine/Audio/FFTFilter.h` 中提供了 2 个重载,当前页面统一汇总这些公开声明。 **类型**: `method`
## 重载 1: 声明 **头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
FFTFilter(); FFTFilter();
```
**参数:** 无。
**返回:** `void` - 无返回值。
## 重载 2: 声明
```cpp
explicit FFTFilter(uint32 fftSize); explicit FFTFilter(uint32 fftSize);
``` ```
**参数:** ## 作用
- `fftSize` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值 构造 `FFTFilter` 实例
**示例:** ## 当前实现
```cpp - 具体定义位于 `engine/src/Audio/FFTFilter.cpp`
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,29 +1,27 @@
# FFTFilter::~FFTFilter() # FFTFilter::~FFTFilter()
销毁对象并释放相关资源。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
~FFTFilter() override; ~FFTFilter() override;
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `kiss_fft_free``kiss_fftr_free` 协同流程
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_fftConfig``m_fftrConfig`
- 当前实现会调用 `kiss_fft_free``kiss_fftr_free`
```cpp - 包含 `nullptr` 相关分支。
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# FFTFilter::GetFFTSize # FFTFilter::GetFFTSize
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
uint32 GetFFTSize() const; uint32 GetFFTSize() const;
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_fftSize` 当前值
**返回:** `uint32` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_fftSize` 当前值。
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::GetFFTSize(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md) - [SetFFTSize](SetFFTSize.md)

View File

@@ -1,30 +1,26 @@
# FFTFilter::GetSmoothingFactor # FFTFilter::GetSmoothingFactor
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
float GetSmoothingFactor() const; float GetSmoothingFactor() const;
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_smoothingFactor` 当前值
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_smoothingFactor` 当前值。
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::GetSmoothingFactor(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md) - [SetSmoothingFactor](SetSmoothingFactor.md)

View File

@@ -1,30 +1,26 @@
# FFTFilter::GetSpectrumData # FFTFilter::GetSpectrumData
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
const float* GetSpectrumData() const; const float* GetSpectrumData() const;
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_spectrumData`
**返回:** `const float*` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 会更新 `m_spectrumData`
- 当前实现会调用 `data`
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::GetSpectrumData(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# FFTFilter::GetSpectrumSize # FFTFilter::GetSpectrumSize
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
size_t GetSpectrumSize() const; size_t GetSpectrumSize() const;
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_spectrumData`
**返回:** `size_t` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 会更新 `m_spectrumData`
- 当前实现会调用 `size`
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::GetSpectrumSize(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,33 +1,26 @@
# FFTFilter::ProcessAudio # FFTFilter::ProcessAudio
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels) override; void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels) override;
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `size``resize` 协同流程。
- `buffer` - 参数语义详见头文件声明。
- `sampleCount` - 参数语义详见头文件声明。
- `channels` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `size``resize``monoBuffer``ComputeFFT`
- 包含 `nullptr` 相关分支。
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::ProcessAudio(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,27 @@
# FFTFilter::SetFFTSize # FFTFilter::SetFFTSize
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
void SetFFTSize(uint32 size); void SetFFTSize(uint32 size);
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_fftSize`
- `size` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_fftSize`
- 当前实现会调用 `resize``InitializeFFT`
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::SetFFTSize(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md) - [GetFFTSize](GetFFTSize.md)

View File

@@ -1,31 +1,27 @@
# FFTFilter::SetSmoothingFactor # FFTFilter::SetSmoothingFactor
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/FFTFilter.h`
## 签名
```cpp ```cpp
void SetSmoothingFactor(float factor); void SetSmoothingFactor(float factor);
``` ```
该方法声明于 `XCEngine/Audio/FFTFilter.h`,当前页面用于固定 `FFTFilter` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_smoothingFactor`
- `factor` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_smoothingFactor`
- 当前实现会调用 `max``min`
```cpp
#include <XCEngine/Audio/FFTFilter.h>
void Example() {
XCEngine::Audio::FFTFilter object;
// 根据上下文补齐参数后调用 FFTFilter::SetSmoothingFactor(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](FFTFilter.md) - [FFTFilter](FFTFilter.md)
- [返回模块目录](../Audio.md) - [GetSmoothingFactor](GetSmoothingFactor.md)

View File

@@ -1,28 +1,25 @@
# HRTF::HRTF() # HRTF::HRTF()
构造对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
HRTF(); HRTF();
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 构造 `HRTF` 实例
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 具体定义位于 `engine/src/Audio/HRTF.cpp`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,29 +1,25 @@
# HRTF::~HRTF() # HRTF::~HRTF()
销毁对象并释放相关资源。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
~HRTF(); ~HRTF();
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 当前实现为空
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前函数体为空。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# HRTF::GetCrossFeed # HRTF::GetCrossFeed
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
float GetCrossFeed() const; float GetCrossFeed() const;
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_crossFeed` 当前值
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_crossFeed` 当前值。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::GetCrossFeed(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md) - [SetCrossFeed](SetCrossFeed.md)

View File

@@ -1,30 +1,26 @@
# HRTF::GetQualityLevel # HRTF::GetQualityLevel
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
uint32 GetQualityLevel() const; uint32 GetQualityLevel() const;
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_qualityLevel` 当前值
**返回:** `uint32` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_qualityLevel` 当前值。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::GetQualityLevel(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md) - [SetQualityLevel](SetQualityLevel.md)

View File

@@ -1,30 +1,26 @@
# HRTF::GetSpeedOfSound # HRTF::GetSpeedOfSound
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
float GetSpeedOfSound() const; float GetSpeedOfSound() const;
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_speedOfSound` 当前值
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_speedOfSound` 当前值。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::GetSpeedOfSound(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md) - [SetSpeedOfSound](SetSpeedOfSound.md)

View File

@@ -1,30 +1,25 @@
# HRTF::IsDopplerShiftEnabled # HRTF::IsDopplerShiftEnabled
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
bool IsDopplerShiftEnabled() const; bool IsDopplerShiftEnabled() const;
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_dopplerEnabled` 当前值
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_dopplerEnabled` 当前值。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::IsDopplerShiftEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# HRTF::IsEnabled # HRTF::IsEnabled
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
bool IsEnabled() const; bool IsEnabled() const;
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_enabled` 当前值
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_enabled` 当前值。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::IsEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# HRTF::IsHRTFEnabled # HRTF::IsHRTFEnabled
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
bool IsHRTFEnabled() const; bool IsHRTFEnabled() const;
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_hrtfEnabled` 当前值
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_hrtfEnabled` 当前值。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::IsHRTFEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,36 +1,26 @@
# HRTF::ProcessAudio # HRTF::ProcessAudio
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels, const Math::Vector3& sourcePosition, const Math::Vector3& listenerPosition, const Math::Quaternion& listenerRotation); void ProcessAudio(float* buffer, uint32 sampleCount, uint32 channels, const Math::Vector3& sourcePosition, const Math::Vector3& listenerPosition, const Math::Quaternion& listenerRotation);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 执行 `ComputeDirection``ComputeITD``ComputeILD` 协同流程。
- `buffer` - 参数语义详见头文件声明。
- `sampleCount` - 参数语义详见头文件声明。
- `channels` - 参数语义详见头文件声明。
- `sourcePosition` - 参数语义详见头文件声明。
- `listenerPosition` - 参数语义详见头文件声明。
- `listenerRotation` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前实现会调用 `ComputeDirection``ComputeITD``ComputeILD``ApplyHRTF``ApplySimplePanning`
- 包含 `nullptr` 相关分支。
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::ProcessAudio(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,27 @@
# HRTF::SetCrossFeed # HRTF::SetCrossFeed
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void SetCrossFeed(float crossFeed); void SetCrossFeed(float crossFeed);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_crossFeed`
- `crossFeed` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_crossFeed`
- 当前实现会调用 `max``min`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::SetCrossFeed(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md) - [GetCrossFeed](GetCrossFeed.md)

View File

@@ -1,31 +1,25 @@
# HRTF::SetDopplerShiftEnabled # HRTF::SetDopplerShiftEnabled
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void SetDopplerShiftEnabled(bool enabled); void SetDopplerShiftEnabled(bool enabled);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_dopplerEnabled`
- `enabled` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_dopplerEnabled`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::SetDopplerShiftEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,25 @@
# HRTF::SetEnabled # HRTF::SetEnabled
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void SetEnabled(bool enabled); void SetEnabled(bool enabled);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_enabled`
- `enabled` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_enabled`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::SetEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,25 @@
# HRTF::SetHRTFEnabled # HRTF::SetHRTFEnabled
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void SetHRTFEnabled(bool enabled); void SetHRTFEnabled(bool enabled);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_hrtfEnabled`
- `enabled` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_hrtfEnabled`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::SetHRTFEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,27 @@
# HRTF::SetQualityLevel # HRTF::SetQualityLevel
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void SetQualityLevel(uint32 level); void SetQualityLevel(uint32 level);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_qualityLevel`
- `level` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_qualityLevel`
- 当前实现会调用 `max``min`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::SetQualityLevel(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md) - [GetQualityLevel](GetQualityLevel.md)

View File

@@ -1,31 +1,27 @@
# HRTF::SetSpeedOfSound # HRTF::SetSpeedOfSound
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/HRTF.h`
## 签名
```cpp ```cpp
void SetSpeedOfSound(float speed); void SetSpeedOfSound(float speed);
``` ```
该方法声明于 `XCEngine/Audio/HRTF.h`,当前页面用于固定 `HRTF` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 更新 `m_speedOfSound`
- `speed` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 会更新 `m_speedOfSound`
- 当前实现会调用 `max`
```cpp
#include <XCEngine/Audio/HRTF.h>
void Example() {
XCEngine::Audio::HRTF object;
// 根据上下文补齐参数后调用 HRTF::SetSpeedOfSound(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](HRTF.md) - [HRTF](HRTF.md)
- [返回模块目录](../Audio.md) - [GetSpeedOfSound](GetSpeedOfSound.md)

View File

@@ -1,29 +1,25 @@
# IAudioBackend::~IAudioBackend() # IAudioBackend::~IAudioBackend()
销毁对象并释放相关资源。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual ~IAudioBackend() = default; virtual ~IAudioBackend() = default;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 销毁 `IAudioBackend` 实例
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前为默认析构实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,25 @@
# IAudioBackend::GetAvailableDevices # IAudioBackend::GetAvailableDevices
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void GetAvailableDevices(std::vector<std::string>& devices) = 0; virtual void GetAvailableDevices(std::vector<std::string>& devices) = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口。
- `devices` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::GetAvailableDevices(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::GetConfig # IAudioBackend::GetConfig
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual AudioConfig GetConfig() const = 0; virtual AudioConfig GetConfig() const = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `AudioConfig` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::GetConfig(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::GetDeviceName # IAudioBackend::GetDeviceName
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual std::string GetDeviceName() const = 0; virtual std::string GetDeviceName() const = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `std::string` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::GetDeviceName(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# IAudioBackend::GetMasterVolume # IAudioBackend::GetMasterVolume
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual float GetMasterVolume() const = 0; virtual float GetMasterVolume() const = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::GetMasterVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md) - [SetMasterVolume](SetMasterVolume.md)

View File

@@ -1,31 +1,25 @@
# IAudioBackend::Initialize # IAudioBackend::Initialize
初始化内部状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual bool Initialize(const AudioConfig& config) = 0; virtual bool Initialize(const AudioConfig& config) = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口。
- `config` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::Initialize(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::IsMuted # IAudioBackend::IsMuted
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual bool IsMuted() const = 0; virtual bool IsMuted() const = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::IsMuted(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::IsRunning # IAudioBackend::IsRunning
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual bool IsRunning() const = 0; virtual bool IsRunning() const = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::IsRunning(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,34 +1,25 @@
# IAudioBackend::ProcessAudio # IAudioBackend::ProcessAudio
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void ProcessAudio(float* buffer, uint32 bufferSize, uint32 channels, uint32 sampleRate) = 0; virtual void ProcessAudio(float* buffer, uint32 bufferSize, uint32 channels, uint32 sampleRate) = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口。
- `buffer` - 参数语义详见头文件声明。
- `bufferSize` - 参数语义详见头文件声明。
- `channels` - 参数语义详见头文件声明。
- `sampleRate` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::ProcessAudio(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::Resume # IAudioBackend::Resume
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void Resume() = 0; virtual void Resume() = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::Resume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,25 @@
# IAudioBackend::SetDevice # IAudioBackend::SetDevice
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual bool SetDevice(const std::string& deviceName) = 0; virtual bool SetDevice(const std::string& deviceName) = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口。
- `deviceName` - 参数语义详见头文件声明。
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::SetDevice(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,31 +1,26 @@
# IAudioBackend::SetMasterVolume # IAudioBackend::SetMasterVolume
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void SetMasterVolume(float volume) = 0; virtual void SetMasterVolume(float volume) = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口。
- `volume` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::SetMasterVolume(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md) - [GetMasterVolume](GetMasterVolume.md)

View File

@@ -1,31 +1,25 @@
# IAudioBackend::SetMuted # IAudioBackend::SetMuted
设置相关状态或配置。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void SetMuted(bool muted) = 0; virtual void SetMuted(bool muted) = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口。
- `muted` - 参数语义详见头文件声明。
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::SetMuted(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::Shutdown # IAudioBackend::Shutdown
关闭并清理内部状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void Shutdown() = 0; virtual void Shutdown() = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::Shutdown(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::Start # IAudioBackend::Start
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void Start() = 0; virtual void Start() = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::Start(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::Stop # IAudioBackend::Stop
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void Stop() = 0; virtual void Stop() = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::Stop(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,25 @@
# IAudioBackend::Suspend # IAudioBackend::Suspend
公开方法,详见头文件声明。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioBackend.h`
## 签名
```cpp ```cpp
virtual void Suspend() = 0; virtual void Suspend() = 0;
``` ```
该方法声明于 `XCEngine/Audio/IAudioBackend.h`,当前页面用于固定 `IAudioBackend` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 纯虚接口
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 该声明是纯虚接口,基类不提供实现。
```cpp
#include <XCEngine/Audio/IAudioBackend.h>
void Example() {
XCEngine::Audio::IAudioBackend object;
// 根据上下文补齐参数后调用 IAudioBackend::Suspend(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioBackend.md) - [IAudioBackend](IAudioBackend.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,29 +1,25 @@
# IAudioEffect::~IAudioEffect() # IAudioEffect::~IAudioEffect()
销毁对象并释放相关资源。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioEffect.h`
## 签名
```cpp ```cpp
virtual ~IAudioEffect() = default; virtual ~IAudioEffect() = default;
``` ```
该方法声明于 `XCEngine/Audio/IAudioEffect.h`,当前页面用于固定 `IAudioEffect` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 销毁 `IAudioEffect` 实例
**返回:** `void` - 无返回值。 ## 当前实现
**示例:** - 当前为默认析构实现。
```cpp
#include <XCEngine/Audio/IAudioEffect.h>
void Example() {
XCEngine::Audio::IAudioEffect object;
// 对象离开作用域时会自动触发析构。
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioEffect.md) - [IAudioEffect](IAudioEffect.md)
- [返回模块目录](../Audio.md)

View File

@@ -1,30 +1,26 @@
# IAudioEffect::GetWetMix # IAudioEffect::GetWetMix
获取相关状态或对象。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioEffect.h`
## 签名
```cpp ```cpp
virtual float GetWetMix() const; virtual float GetWetMix() const;
``` ```
该方法声明于 `XCEngine/Audio/IAudioEffect.h`,当前页面用于固定 `IAudioEffect` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_wetMix` 当前值
**返回:** `float` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_wetMix` 当前值。
```cpp
#include <XCEngine/Audio/IAudioEffect.h>
void Example() {
XCEngine::Audio::IAudioEffect object;
// 根据上下文补齐参数后调用 IAudioEffect::GetWetMix(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioEffect.md) - [IAudioEffect](IAudioEffect.md)
- [返回模块目录](../Audio.md) - [SetWetMix](SetWetMix.md)

View File

@@ -1,30 +1,25 @@
# IAudioEffect::IsEnabled # IAudioEffect::IsEnabled
查询当前状态。 **命名空间**: `XCEngine::Audio`
**类型**: `method`
**头文件**: `XCEngine/Audio/IAudioEffect.h`
## 签名
```cpp ```cpp
virtual bool IsEnabled() const; virtual bool IsEnabled() const;
``` ```
该方法声明于 `XCEngine/Audio/IAudioEffect.h`,当前页面用于固定 `IAudioEffect` 类目录下的方法级 canonical 路径。 ## 作用
**参数:** 返回 `m_enabled` 当前值
**返回:** `bool` - 返回值语义详见头文件声明。 ## 当前实现
**示例:** - 返回 `m_enabled` 当前值。
```cpp
#include <XCEngine/Audio/IAudioEffect.h>
void Example() {
XCEngine::Audio::IAudioEffect object;
// 根据上下文补齐参数后调用 IAudioEffect::IsEnabled(...)。
(void)object;
}
```
## 相关文档 ## 相关文档
- [返回类总览](IAudioEffect.md) - [IAudioEffect](IAudioEffect.md)
- [返回模块目录](../Audio.md)

Some files were not shown because too many files have changed in this diff Show More