2.5 KiB
2.5 KiB
ImGuiSession
命名空间: XCEngine::Editor::UI
类型: class
源文件: editor/src/UI/ImGuiSession.h
描述: 管理编辑器的 ImGui 上下文、布局 ini 文件位置、基础字体配置和默认主题应用。
概述
ImGuiSession 负责的是 ImGui 自身的生命周期和持久化布局配置。
它当前主要做三件事:
- 创建/销毁 ImGui context
- 把布局 ini 文件放到
<project>/.xceditor/imgui_layout.ini - 配置默认字体、DPI 缩放和基础主题
当前公开方法
| 方法 | 说明 |
|---|---|
Initialize(projectPath, mainDpiScale) |
创建 ImGui context,并绑定项目级 ini、主题和字体。 |
Shutdown() |
先保存布局,再销毁当前 ImGui context。 |
SaveSettings() |
把当前布局写回磁盘。 |
GetIniPath() |
返回当前项目绑定的 ini 路径。 |
SetProjectPath(projectPath) |
切换到新的项目级 ini 文件,并返回磁盘上是否已有 docking 布局。 |
当前实现说明
Initialize(projectPath, mainDpiScale)会创建 context,并开启ImGuiConfigFlags_DockingEnable、ConfigDpiScaleFonts和ConfigDpiScaleViewports。- ini 文件当前固定落在
<project>/.xceditor/imgui_layout.ini。 - 主题配置会先应用
BaseTheme,再把 DPI 缩放钳到1.0f到4.0f。 - 字体当前优先加载
C:/Windows/Fonts/segoeui.ttf,成功时再 mergeC:/Windows/Fonts/msyh.ttc作为中文 fallback;如果主字体失败,则退化为单独加载msyh.ttc,最后才回退到 ImGui 默认字体。 Shutdown()会先保存设置,再销毁当前 context。SaveSettings()只在 context 存在且 ini 路径非空时生效。SetProjectPath(projectPath)会先保存当前布局,再切换 ini 路径、重新加载磁盘设置,并返回该 ini 文件里是否已经存在[Docking][Data]。GetIniPath()暴露的是当前会话实际绑定的 ini 文件路径。
当前实现边界
- 当前字体路径写死为 Windows 字体目录。
- 当前 ini 文件位置策略是项目局部目录,而不是全局用户目录。
SetProjectPath(...)的返回值只表示磁盘上是否检测到了保存过的 docking 数据,不代表布局内容一定可用。- 当前主要负责会话和基础样式,不处理平台/渲染后端桥接。