Files
XCEngine/docs/api/XCEngine/Editor/Application/SwitchProject.md

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 布局会话
    • 资源根
    • 脚本运行时
    • 窗口标题

相关文档