docs: add Editor API documentation

This commit is contained in:
2026-03-27 14:40:29 +08:00
parent 3e2608a802
commit 94c56dd279
87 changed files with 3795 additions and 2 deletions

View File

@@ -0,0 +1,54 @@
# EntityCommands
**命名空间**: `XCEngine::Editor::Commands`
**类型**: `header-helper`
**源文件**: `editor/src/Commands/EntityCommands.h`
**描述**: 封装实体创建、重命名、删除、复制粘贴、重复和父子重挂接等场景编辑命令。
## 概述
`EntityCommands` 是当前 Scene 编辑工作流里最重要的一层命令辅助。
Hierarchy 面板、Edit 菜单和快捷键触发的实体级操作,最终大多落到这里。
当前覆盖:
- 创建空实体、Camera、Light
- 重命名与删除实体
- 复制、粘贴、重复实体
- 重挂接父节点并尽量保持世界变换
- 从父节点分离实体
## 当前实现
- 结构性修改统一通过 [`UndoUtils::ExecuteSceneCommand`](../../Utils/UndoUtils/UndoUtils.md) 包装
- 创建实体后会自动把新实体设置为当前选中对象
- `CreateCameraEntity``CreateLightEntity` 会附加对应组件
- `CanReparentEntity` 会阻止把对象挂到自己的子孙节点下
- `ReparentEntityPreserveWorldTransform` 会缓存当前位置、旋转和缩放,再执行 `MoveEntity`
## 设计说明
把实体编辑动作做成独立命令层,是编辑器架构里非常关键的一步。
如果直接在 Hierarchy 面板里 `CreateEntity``DeleteEntity``MoveEntity`,会很快遇到三个问题:
- 撤销历史无法统一
- 菜单栏、快捷键、右键菜单会重复同一逻辑
- 结构修改和 UI 交互代码缠在一起
`EntityCommands` 把“编辑行为语义”稳定下来,面板和 router 只需要负责调用它。
## 当前限制
- `CreateCubeEntity` / `CreateSphereEntity` / `CreatePlaneEntity` 在当前路由中实际上还是创建命名后的空实体,不会自动生成渲染组件
- 粘贴和重复的深拷贝语义完全依赖 `ISceneManager` 当前实现
- 多实体批量命令尚未覆盖
## 相关文档
- [Commands](../Commands.md)
- [HierarchyActionRouter](../../Actions/HierarchyActionRouter/HierarchyActionRouter.md)
- [SceneManager](../../Managers/SceneManager/SceneManager.md)
- [UndoUtils](../../Utils/UndoUtils/UndoUtils.md)