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,48 @@
# ConsoleActionRouter
**命名空间**: `XCEngine::Editor::Actions`
**类型**: `header-helper`
**源文件**: `editor/src/Actions/ConsoleActionRouter.h`
**描述**: 为 Console 面板提供工具栏动作和日志列表绘制逻辑。
## 概述
`ConsoleActionRouter` 目前主要负责两件事:
- `DrawConsoleToolbarActions` 绘制清空按钮和 Info / Warn / Error 过滤切换
- `DrawConsoleLogRows` 读取 `EditorConsoleSink` 中的日志,并按过滤条件输出到面板
`ConsolePanel.cpp` 只负责搭窗口和滚动区域,真正的交互逻辑由这层统一承接。这样 Console 面板本身会保持很薄,不会把过滤策略、日志格式化和按钮语义都堆在一个类里。
## 当前实现
- 数据源固定为 [`EditorConsoleSink`](../../Core/EditorConsoleSink/EditorConsoleSink.md)
- 过滤状态由 [`ConsoleFilterState`](../../UI/ConsoleFilterState/ConsoleFilterState.md) 持有
- 每条日志通过 [`BuildConsoleLogText`](../../UI/ConsoleLogFormatter/ConsoleLogFormatter.md) 生成展示字符串
- 点击日志行时会把完整字符串复制到剪贴板
## 设计说明
这层拆分的价值在于把“日志存储”和“日志呈现”分开:
- `EditorConsoleSink` 关注线程安全和日志缓存
- `ConsoleActionRouter` 关注工具栏与列表交互
- `UI` 辅助函数负责外观和文本格式
这种分层比直接在 `ConsolePanel::Render` 中处理全部逻辑更容易维护,也更接近商业级编辑器里常见的 presenter / controller 风格。
## 当前限制
- 当前过滤粒度只有三档:信息、警告、错误
- 没有搜索、分类树、时间戳列或堆栈追踪展开
- `GetLogs()` 会复制整个日志数组,日志量继续增大后可能需要增量视图或虚拟列表
## 相关文档
- [Actions](../Actions.md)
- [ConsolePanel](../../panels/ConsolePanel/ConsolePanel.md)
- [EditorConsoleSink](../../Core/EditorConsoleSink/EditorConsoleSink.md)
- [ConsoleFilterState](../../UI/ConsoleFilterState/ConsoleFilterState.md)