1.4 KiB
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 生命周期都只在当前进程内有效。