Refactor editor scene document ownership into runtime coordinator

This commit is contained in:
2026-04-29 16:24:06 +08:00
parent 749417989a
commit 631bf32db2
9 changed files with 197 additions and 78 deletions

View File

@@ -38,13 +38,12 @@ public:
void Reset();
void SetBackend(std::unique_ptr<EditorSceneBackend> backend);
bool Initialize(const std::filesystem::path& projectRoot);
EditorStartupSceneResult Initialize(const std::filesystem::path& projectRoot);
void BindSelectionService(EditorSelectionService* selectionService);
void RefreshScene();
void EnsureSceneSelection();
const EditorStartupSceneResult& GetStartupResult() const;
EditorSceneHierarchySnapshot BuildHierarchySnapshot() const;
std::vector<EditorSceneViewportIconSnapshot> BuildSceneViewportIconSnapshots() const;
std::optional<EditorSceneViewportSelectionSnapshot> BuildSceneViewportSelectionSnapshot() const;
@@ -67,6 +66,7 @@ public:
bool OpenSceneAsset(const std::filesystem::path& scenePath);
bool SaveScene(const std::filesystem::path& scenePath);
::XCEngine::Components::Scene* GetActiveScene() const;
std::string GetActiveSceneName() const;
std::unique_ptr<EditorScenePlaySession> BeginPlaySession();
bool RenameGameObject(
@@ -139,7 +139,6 @@ private:
std::filesystem::path m_projectRoot = {};
std::unique_ptr<EditorSceneBackend> m_backend = {};
EditorStartupSceneResult m_startupSceneResult = {};
EditorSelectionService m_ownedSelectionService = {};
EditorSelectionService* m_selectionService = &m_ownedSelectionService;
std::vector<TransformEditTransaction> m_transformUndoStack = {};