Files
XCEngine/docs/api/XCEngine/Editor/Managers/SceneManager/SceneManager.md

1.4 KiB

SceneManager

命名空间: XCEngine::Editor

类型: class

源文件: editor/src/Managers/SceneManager.h

描述: ISceneManager 的默认实现,负责编辑器场景对象树、复制粘贴、场景文件加载保存、脏状态与快照恢复。

概述

SceneManager 是当前编辑器里最重的服务之一。

它当前同时负责:

  • Scene 与根实体列表
  • 实体新建/删除/重命名
  • 复制/粘贴/复制快照
  • 层级移动
  • 场景文件新建、加载、保存
  • 场景脏状态
  • 场景快照抓取与恢复
  • EventBus 和本地 Core::Event 发布事件

当前实现说明

  • 内部持有 std::unique_ptr<Components::Scene>
  • CreateEntity() 会在没有场景时自动创建 "EditorScene"
  • 删除实体时会递归删除全部子节点。
  • 剪贴板数据是自定义 ClipboardData 树,不是系统剪贴板。
  • CaptureSceneSnapshot() / RestoreSceneSnapshot() 是当前 undo 的基础。

当前实现边界

  • 事件通知是同步的。
  • 复制粘贴依赖 ComponentFactoryRegistry 和组件自己的 Serialize/Deserialize
  • 当前没有更高级的 prefab、variant 或 scene diff 机制。
  • HasClipboardData() 和 clipboard 生命周期都只在当前进程内有效。

相关文档