Files
XCEngine/docs/used/Editor重构3.26.md

166 lines
5.5 KiB
Markdown
Raw Permalink Normal View History

# Editor 重构 3.26
2026-03-26 21:18:33 +08:00
## 当前判断
截至 2026-03-27如果只看 editor 的 UI 架构与编辑器壳层整理,不把 `Viewport / RHI``Scene / Game` 的真实内容算进去,这一轮重构大约已经完成 **96%**
2026-03-26 21:18:33 +08:00
如果把“编辑器整体可用度”一起算进去,则仍然没有结束,因为:
2026-03-26 21:18:33 +08:00
- `Scene` panel 仍然是空壳。
- `Game` panel 仍然是空壳。
- `Viewport` 尚未跟随 RHI 重构完成回归。
2026-03-26 21:18:33 +08:00
所以现在的真实状态是:
2026-03-26 21:18:33 +08:00
- **UI 架构已经基本收稳**
- **编辑器产品功能还没有做完**
2026-03-26 21:18:33 +08:00
## 已经完成的核心重构
2026-03-26 21:18:33 +08:00
### 1. 分层已经基本建立
2026-03-26 21:18:33 +08:00
当前 editor 已经形成比较稳定的职责划分:
2026-03-26 21:18:33 +08:00
- `UI` 负责主题、token、共享控件、popup、property-grid。
- `Actions` 负责菜单、快捷键、右键菜单、按钮动作的共享路由。
- `Commands` 负责 scene/project/entity/component 的编辑行为。
- `Layout` 负责 dock host、默认布局、布局重置与持久化。
- `Panels` 逐步退化为窗口壳层。
- `Core / Managers` 负责 editor context、selection、undo、scene、project 等共享状态。
- `ComponentEditors` 负责 inspector 中各组件的编辑器与注册体系。
2026-03-26 21:18:33 +08:00
这说明 editor 已经从“每个 panel 自己堆逻辑”的结构,切换到“共享层驱动”的结构。
2026-03-26 21:18:33 +08:00
### 2. 共享 UI 基础层已经落稳
2026-03-26 21:18:33 +08:00
已经把大量原先散落在 panel 内部的视觉和控件逻辑收口到 shared UI 层,包括:
2026-03-26 21:18:33 +08:00
- 主题和样式 token
- panel chrome
- toolbar/search/button
- popup / modal state
- empty state
- asset tile
- hierarchy tree node
- component section
- property grid / scalar / vector 编辑控件
2026-03-26 21:18:33 +08:00
这部分的意义是:后面再调 editor 外观,不应该回到 panel 内部逐个修补。
2026-03-26 21:18:33 +08:00
### 3. Action 路由已经成型
2026-03-26 21:18:33 +08:00
当前已形成两条主路由:
2026-03-26 21:18:33 +08:00
- `MainMenuActionRouter`
- `EditActionRouter`
2026-03-26 21:18:33 +08:00
并且 `Hierarchy / Project / Inspector / Console / MenuBar` 的主要菜单和快捷键语义已经接入共享 action/router。
2026-03-26 21:18:33 +08:00
当前已经做到:
2026-03-26 21:18:33 +08:00
- `Edit` 菜单不再只是一套写死逻辑,而是跟随 active action route 切换。
- menu / shortcut / context menu / toolbar 的动作开始共用同一套 action 定义。
- rename、popup、about、exit、reset layout 等交互已不再零散写在 panel 内部。
2026-03-26 21:18:33 +08:00
### 4. Commands 层已经承担主要编辑语义
2026-03-26 21:18:33 +08:00
当前主要编辑行为已进入 command 层:
2026-03-26 21:18:33 +08:00
- 新建 / 打开 / 保存场景
- 脏场景 fallback 保存
- 创建 / 删除 / 复制 / 粘贴 / duplicate / rename / reparent entity
- 创建文件夹 / 删除资源 / 打开资源 / 移动资源
- 添加 / 删除组件
2026-03-26 21:18:33 +08:00
同时undo / dirty / selection reset 等关键边界,已经尽量不再散落在 panel。
2026-03-26 21:18:33 +08:00
### 5. Dock / Workspace / Application 壳层已收口
2026-03-26 21:18:33 +08:00
当前已经完成:
2026-03-26 21:18:33 +08:00
- `EditorWorkspace` 统一 panel 装配与生命周期调度
- `DockLayoutController` 统一 dockspace 和 layout reset
- ImGui layout 持久化到项目 `.xceditor/imgui_layout.ini`
- `Application.cpp` 中的窗口、renderer、ImGui session、layer attach/detach 已完成明显拆分
2026-03-26 21:18:33 +08:00
这说明 editor 顶层壳层已经不再像之前那样把 UI、layout、backend、panel 生命周期混在一起。
2026-03-26 21:18:33 +08:00
### 6. Inspector 的 ComponentEditor 注册体系已稳定
2026-03-26 21:18:33 +08:00
当前 inspector 不再直接硬编码全部组件逻辑,而是通过:
2026-03-26 21:18:33 +08:00
- `IComponentEditor`
- `ComponentEditorRegistry`
- 各具体 `Transform / Camera / Light` component editor
2026-03-26 21:18:33 +08:00
来统一:
2026-03-26 21:18:33 +08:00
- 组件显示
- Add Component 菜单构建
- 组件可添加性 / 可删除性判断
2026-03-26 21:18:33 +08:00
这部分已经是后续扩展自定义组件 inspector 的正确落点。
2026-03-26 21:18:33 +08:00
### 7. 回归测试基础已补齐
2026-03-26 21:18:33 +08:00
当前已新增 `editor_tests`,并已覆盖关键 editor 行为,包括:
2026-03-26 21:18:33 +08:00
- hierarchy edit route 的 copy / paste / duplicate / delete / rename request
- project edit route 的 open / back / delete
- scene dirty save + load 后的 selection / undo reset
- reparent 时的 parent 切换、cycle 拦截与 world transform 保持
- main menu 的 exit / reset layout / about popup request
- hierarchy rename helper
- project create-folder / move-asset / open-folder helper
2026-03-26 21:18:33 +08:00
本轮收尾继续补充后,测试会进一步覆盖:
2026-03-26 21:18:33 +08:00
- clean scene 下的新建场景重置行为
- clean scene 下 fallback save 的 no-op 路径
- project move-asset 的非法输入保护
2026-03-26 21:18:33 +08:00
## 当前仍然剩下什么
2026-03-26 21:18:33 +08:00
### 架构收尾项
2026-03-26 21:18:33 +08:00
1. 继续压缩少量 panel 本地瞬时状态
目标是把还能共享的 popup / router / state 再往 shared 层收一点。
2026-03-26 21:18:33 +08:00
2. 继续补 editor 回归测试
重点补 command/router 边界,而不是 UI 像素测试。
2026-03-26 21:18:33 +08:00
3. 为 viewport 回归保留 editor shell 接口
但暂时不把 RHI/renderer 接进来。
2026-03-26 21:18:33 +08:00
### 暂缓项
以下内容不计入当前这一轮 UI 架构收尾:
- `Scene` panel 真正内容
- `Game` panel 真正内容
- `Viewport` 渲染接入
2026-03-26 21:18:33 +08:00
原因不是不做,而是这些工作和 renderer / RHI 重构直接绑定,应该放到后续阶段。
2026-03-26 21:18:33 +08:00
## 本轮新增文档
2026-03-26 21:18:33 +08:00
本次已补正式架构说明:
2026-03-26 21:18:33 +08:00
- `docs/plan/Editor架构说明.md`
2026-03-26 21:18:33 +08:00
这个文档用于明确:
2026-03-26 21:18:33 +08:00
- 各层职责边界
- 允许依赖方向
- panel / action / command / manager / component editor 的落点规则
- event bus、undo、dirty、selection 的统一约定
2026-03-26 21:18:33 +08:00
## 阶段性结论
当前 editor 可以明确地说:
2026-03-26 21:18:33 +08:00
- **UI 架构层面已经基本重构完成**
- **剩余主要是封口、验证和后续 viewport 接入准备**
2026-03-26 21:18:33 +08:00
也就是说,后面不应该再回到“看到一个 panel 问题就地补一段特殊逻辑”的方式,而应该继续沿着现有分层做增量完善。