Files
XCEngine/docs/api/XCEngine/Editor/Managers/ProjectManager/MoveItem.md

1.6 KiB
Raw Blame History

ProjectManager::MoveItem

bool MoveItem(const std::string& sourceFullPath, const std::string& destFolderFullPath);

当前行为

MoveItem(...) 当前只支持“把一个项目内条目移动到另一个项目内目录”。

它会校验:

  • 源路径和目标目录路径都非空
  • m_rootFolder 已存在
  • 源路径存在
  • 目标路径存在且是目录
  • 源和目标都位于项目根目录之下
  • 源路径不是根目录本身
  • 若源是目录,目标不能位于它自己的子树里
  • 目标最终路径不能与源路径相同
  • 目标最终路径不能已存在同名条目

成功路径

校验通过后,当前会:

  1. 把目标路径拼成 destFolder / source.filename()
  2. 对资源本体执行 fs::rename(sourcePath, destPath)
  3. 若存在同名 .meta sidecar则同步移动 .meta
  4. 调用 RefreshCurrentFolder

同步移动 sidecar 是当前资源移动行为里很重要的一部分,因为它让导入元数据和资源路径保持一致,不会把 .meta 留在旧目录。

返回值语义

  • 移动成功并刷新完成时返回 true
  • 任一校验失败或文件系统异常时返回 false

当前限制

  • 当前不做自动重命名避让;目标已有同名条目会直接失败
  • 当前不会主动保留被移动条目的选择状态;若路径变化导致旧 m_selectedItemPath 失效,刷新后选择可能被清掉

相关文档