docs: add Editor API documentation
This commit is contained in:
@@ -0,0 +1,52 @@
|
||||
# ProjectActionRouter
|
||||
|
||||
**命名空间**: `XCEngine::Editor::Actions`
|
||||
|
||||
**类型**: `header-helper`
|
||||
|
||||
**源文件**: `editor/src/Actions/ProjectActionRouter.h`
|
||||
|
||||
**描述**: 封装 Project 面板中的资源选择、导航、拖放、上下文菜单和创建文件夹弹窗流程。
|
||||
|
||||
## 概述
|
||||
|
||||
`ProjectActionRouter` 让 `ProjectPanel.cpp` 可以专注于资源网格布局,而把交互行为集中管理。当前覆盖的能力包括:
|
||||
|
||||
- 资源项选中与右键上下文菜单
|
||||
- 文件夹打开与返回上级导航
|
||||
- 资源拖放到目录
|
||||
- 空白区域上下文菜单
|
||||
- “Create Folder” 弹窗与提交
|
||||
|
||||
## 当前实现
|
||||
|
||||
- 资源拖拽载荷类型固定为 `"ASSET_ITEM"`
|
||||
- 打开资源时只支持两类:文件夹与 `type == "Scene"` 的资源
|
||||
- 删除资源调用 [`DeleteAsset`](../../Commands/ProjectCommands/ProjectCommands.md)
|
||||
- 移动资源调用 `MoveAssetToFolder`
|
||||
- 创建目录弹窗依赖 [`TextInputPopupState`](../../UI/PopupState/PopupState.md)
|
||||
|
||||
`FindProjectItemIndex` 还额外做了 `fullPath` 匹配,这说明当前实现允许在某些刷新路径下通过值语义重新定位资源项,而不是完全依赖共享指针地址。
|
||||
|
||||
## 设计说明
|
||||
|
||||
Project 面板本质上是一个资产浏览器。
|
||||
把这些动作单独放在 router 层,有助于把以下两类变化隔开:
|
||||
|
||||
- 视觉变化:列表改网格、加图标、加搜索、加分栏
|
||||
- 交互语义变化:打开、删除、移动、创建目录
|
||||
|
||||
这样后续即使 Project 面板彻底重画 UI,动作语义仍然可以稳定保留。
|
||||
|
||||
## 当前限制
|
||||
|
||||
- 当前资源系统没有更细的资源类型分发,场景之外的资源多数只能展示,不能打开
|
||||
- 资源重命名、复制、粘贴尚未实现
|
||||
- 没有回收站、删除确认和批量操作
|
||||
|
||||
## 相关文档
|
||||
|
||||
- [Actions](../Actions.md)
|
||||
- [ProjectPanel](../../panels/ProjectPanel/ProjectPanel.md)
|
||||
- [ProjectCommands](../../Commands/ProjectCommands/ProjectCommands.md)
|
||||
- [PopupState](../../UI/PopupState/PopupState.md)
|
||||
Reference in New Issue
Block a user