docs: refresh xcui panel and backend references
This commit is contained in:
@@ -11,7 +11,6 @@
|
||||
## 概览
|
||||
|
||||
`ImGuiTransitionBackend` 解决的是“XCUI 已经有 draw command,但 editor 主窗口仍由 ImGui 承载”这个过渡问题。
|
||||
|
||||
它当前做三件事:
|
||||
|
||||
- 在 `BeginFrame()` 清空上一帧待刷数据
|
||||
@@ -29,12 +28,12 @@
|
||||
- `EndFrame(...)` 默认落到 `ImGui::GetWindowDrawList()`;如果目标 draw list 为空,会清空 pending state 并返回 `false`。
|
||||
- flush 时会维护 `clipDepth`;即便调用方忘了显式补足 `PopClipRect`,函数也会在尾部补弹所有未闭合 clip。
|
||||
- `Text` 命令在 `fontSize <= 0` 时回退到 `ImGui::GetFontSize()`。
|
||||
- `Image` 命令当前要求 `UITextureHandle::IsValid()` 为真;并且固定使用整张纹理,不消费 `UIDrawCommand.uvMin / uvMax`。
|
||||
- `Image` 命令当前要求 `UITextureHandle::IsValid()` 为真,并且固定使用整张纹理,不消费 `UIDrawCommand.uvMin / uvMax`。
|
||||
|
||||
## 当前调用链
|
||||
|
||||
- `tests/Editor/test_xcui_imgui_transition_backend.cpp` 当前直接验证了 pending state 重置和 flush 后 `ImDrawList` 顶点 / 命令缓冲被写入。
|
||||
- 当前代码树里已经没有 `editor/src/panels/XCUIDemoPanel.h/.cpp`;旧版 demo panel 文档仅作为历史迁移锚点保留,不再代表真实 source-backed 调用链。
|
||||
- `editor/src/XCUIBackend/XCUIDemoRuntime.h` 当前产出 `UIDrawData`,与这个桥接器共同构成 XCUI 过渡渲染链路里的最小 source-backed 锚点。
|
||||
|
||||
## 当前实现边界
|
||||
|
||||
@@ -47,4 +46,3 @@
|
||||
- [XCUIBackend](../XCUIBackend.md)
|
||||
- [DrawData](../../../UI/DrawData/DrawData.md)
|
||||
- [XCUIDemoRuntime](../XCUIDemoRuntime/XCUIDemoRuntime.md)
|
||||
- [XCUIDemoPanel](../../panels/XCUIDemoPanel/XCUIDemoPanel.md)
|
||||
|
||||
@@ -4,14 +4,12 @@
|
||||
|
||||
**类型**: `submodule`
|
||||
|
||||
**描述**: 编辑器工作面板子模块,覆盖通用 `Panel` 生命周期、面板集合调度以及 Hierarchy、Project、Inspector、Scene/Game View、Console、MenuBar 等主要工作窗口。
|
||||
**描述**: 编辑器工作面板子模块,覆盖通用 `Panel` 生命周期、面板集合调度,以及 `Hierarchy`、`Project`、`Inspector`、`Scene/Game View`、`Console`、`MenuBar` 等主要工作窗口。
|
||||
|
||||
## 概述
|
||||
## 概览
|
||||
|
||||
`editor/src/panels` 是当前 Editor 工作区的直接承载层。
|
||||
|
||||
这些类型共同决定:
|
||||
|
||||
- 用户能看到哪些窗口
|
||||
- 每个窗口如何接收 `IEditorContext`
|
||||
- 哪些窗口只是展示层,哪些窗口还会参与动作路由
|
||||
@@ -22,7 +20,6 @@
|
||||
## 当前面板集合
|
||||
|
||||
活跃文档当前覆盖:
|
||||
|
||||
- [Panel](Panel/Panel.md)
|
||||
- [PanelCollection](PanelCollection/PanelCollection.md)
|
||||
- [MenuBar](MenuBar/MenuBar.md)
|
||||
@@ -41,7 +38,6 @@
|
||||
当前面板层可以粗分成三类。
|
||||
|
||||
### 工作区容器
|
||||
|
||||
- `Panel`
|
||||
- `PanelCollection`
|
||||
|
||||
@@ -71,18 +67,11 @@
|
||||
|
||||
这两页不是 panel 本体,而是挂在 `editor/src/panels` 目录下、服务 `InspectorPanel` 材质 authoring 流程的状态与 I/O helper。
|
||||
|
||||
### 历史过渡页面
|
||||
|
||||
- [XCUIDemoPanel](XCUIDemoPanel/XCUIDemoPanel.md)
|
||||
|
||||
这是一页保留的历史文档;当前 `editor/src/panels` 源树里已经没有对应 header。
|
||||
|
||||
## 当前实现特点
|
||||
|
||||
### 上下文统一注入
|
||||
|
||||
当前每个面板都通过 `IEditorContext*` 获取:
|
||||
|
||||
- 选择状态
|
||||
- 场景状态
|
||||
- 项目状态
|
||||
@@ -91,20 +80,18 @@
|
||||
|
||||
所以面板层没有自己 new 一套 manager,而是共享同一个 editor context。
|
||||
|
||||
### 薄面板趋势
|
||||
### 各面板职责
|
||||
|
||||
这轮源码和文档对齐后,几个关键面板的职责边界已经比较清晰:
|
||||
|
||||
- `HierarchyPanel` 主要负责树渲染,交互语义下沉到 `HierarchyActionRouter`
|
||||
- `ProjectPanel` 主要负责目录树 / 面包屑 / 网格布局,编辑动作下沉到 `ProjectCommands`
|
||||
- `InspectorPanel` 主要负责 subject 决策与 section 组织,具体字段 UI 下沉到 `ComponentEditors`
|
||||
|
||||
这说明当前 panel 层已经明显走向“薄面板 + 富命令/路由层”的结构。
|
||||
这说明当前 panel 层已经明显走向“薄面板 + 富命令 / 路由层”的结构。
|
||||
|
||||
### 视口面板不是 renderer
|
||||
|
||||
`SceneViewPanel` 和 `GameViewPanel` 不再应被理解成“自己持有独立渲染逻辑”的窗口。
|
||||
|
||||
更准确的描述是:
|
||||
|
||||
- 它们是普通面板
|
||||
@@ -112,8 +99,7 @@
|
||||
|
||||
## 设计说明
|
||||
|
||||
当前 panel 子模块的作用,是把编辑器工作区稳定成一组可组合窗口,而不是把所有逻辑都塞进 `EditorLayer`。
|
||||
|
||||
当前 panel 子模块的作用,是把编辑器工作区稳定成一组可组合窗口,而不是把所有逻辑都堆进 `EditorLayer`。
|
||||
这样做的收益很直接:
|
||||
|
||||
- 工作区增删窗口成本更低
|
||||
@@ -122,9 +108,9 @@
|
||||
|
||||
## 当前限制
|
||||
|
||||
- 当前工作区仍然围绕单主窗口 editor 组织。
|
||||
- panel 层没有独立多文档系统。
|
||||
- 某些窗口间协作仍依赖显式 route 和共享上下文,没有更复杂的 pane-level focus manager。
|
||||
- 当前工作区仍然围绕单主窗口 editor 组织
|
||||
- panel 层没有独立多文档系统
|
||||
- 某些窗口间协作仍依赖显式 route 和共享上下文,没有更复杂的 pane-level focus manager
|
||||
|
||||
## 相关文档
|
||||
|
||||
|
||||
Reference in New Issue
Block a user