1.5 KiB
1.5 KiB
Application::SwitchProject
命名空间: XCEngine::Editor
类型: method
源文件: editor/src/Application.h
签名
bool SwitchProject(const std::string& projectPath);
作用
切换当前 Editor 宿主壳所绑定的项目根目录,并同步刷新布局会话、工作目录、资源根、脚本运行时和窗口标题。
当前实现行为
- 当前没有
EditorContext或传入路径为空时直接返回false。 - 首先调用:
const bool hasSavedDockLayout = m_imguiSession.SetProjectPath(projectPath);
- 然后把
EditorContext中的项目路径更新为新路径。 - 接着尝试切换进程工作目录到该项目根,并输出日志。
- 随后执行:
ResourceManager::Get().SetResourceRoot(projectPath.c_str())InitializeScriptingRuntime(projectPath)
- 最后清空
m_lastWindowTitle并重新调用UpdateWindowTitle()。 - 若目标项目没有保存过 dock 布局,会通过
EventBus发布DockLayoutResetRequestedEvent。
返回值
true: 成功完成这次宿主级项目切换。false: 缺少EditorContext或传入路径为空。
设计含义
- 当前项目切换不是单纯改一条路径字符串,而是一次宿主级上下文切换。
- 它同时影响:
- ImGui 布局会话
- 资源根
- 脚本运行时
- 窗口标题