refactor(editor): isolate engine service boundaries

This commit is contained in:
2026-04-29 03:19:46 +08:00
parent ef11651ec2
commit 313a571e43
60 changed files with 3804 additions and 2611 deletions

View File

@@ -80,7 +80,9 @@ TEST(HierarchySceneBindingTests, BuildFromSceneUsesRealGameObjectIds) {
GameObject* child = scene->CreateGameObject("Child", root);
ASSERT_NE(child, nullptr);
const HierarchyModel model = HierarchyModel::BuildFromScene(scene);
const std::unique_ptr<EditorSceneBackend> backend = CreateTestSceneBackend();
const HierarchyModel model =
HierarchyModel::BuildFromSnapshot(backend->BuildHierarchySnapshot());
const HierarchyNode* rootNode =
model.FindNode(MakeEditorGameObjectItemId(root->GetID()));
ASSERT_NE(rootNode, nullptr);
@@ -109,7 +111,8 @@ TEST(HierarchySceneBindingTests, DuplicateGameObjectClonesHierarchyIntoScene) {
backend->DuplicateGameObject(MakeEditorGameObjectItemId(root->GetID()));
ASSERT_FALSE(duplicateId.empty());
const HierarchyModel model = HierarchyModel::BuildFromScene(scene);
const HierarchyModel model =
HierarchyModel::BuildFromSnapshot(backend->BuildHierarchySnapshot());
const HierarchyNode* duplicateNode = model.FindNode(duplicateId);
ASSERT_NE(duplicateNode, nullptr);
EXPECT_EQ(duplicateNode->label, "Root");
@@ -136,7 +139,8 @@ TEST(HierarchySceneBindingTests, RenameGameObjectUpdatesRealSceneAndProjection)
ASSERT_TRUE(backend->RenameGameObject(itemId, "PlayerCamera"));
EXPECT_EQ(gameObject->GetName(), "PlayerCamera");
const HierarchyModel model = HierarchyModel::BuildFromScene(scene);
const HierarchyModel model =
HierarchyModel::BuildFromSnapshot(backend->BuildHierarchySnapshot());
const HierarchyNode* node = model.FindNode(itemId);
ASSERT_NE(node, nullptr);
EXPECT_EQ(node->label, "PlayerCamera");
@@ -162,7 +166,8 @@ TEST(HierarchySceneBindingTests, ReparentAndMoveToRootOperateOnRealScene) {
MakeEditorGameObjectItemId(parentB->GetID())));
EXPECT_EQ(child->GetParent(), parentB);
HierarchyModel model = HierarchyModel::BuildFromScene(scene);
HierarchyModel model =
HierarchyModel::BuildFromSnapshot(backend->BuildHierarchySnapshot());
const HierarchyNode* parentBNode =
model.FindNode(MakeEditorGameObjectItemId(parentB->GetID()));
ASSERT_NE(parentBNode, nullptr);
@@ -173,7 +178,7 @@ TEST(HierarchySceneBindingTests, ReparentAndMoveToRootOperateOnRealScene) {
MakeEditorGameObjectItemId(child->GetID())));
EXPECT_EQ(child->GetParent(), nullptr);
model = HierarchyModel::BuildFromScene(scene);
model = HierarchyModel::BuildFromSnapshot(backend->BuildHierarchySnapshot());
const auto roots = scene->GetRootGameObjects();
EXPECT_EQ(roots.size(), 3u);
}
@@ -196,11 +201,12 @@ TEST(HierarchySceneBindingTests, EnsureStartupSceneLoadsMainSceneAndSetsActive)
backend->EnsureStartupScene(projectRoot.Root());
EXPECT_TRUE(result.ready);
EXPECT_TRUE(result.loadedFromDisk);
ASSERT_NE(backend->GetActiveScene(), nullptr);
EXPECT_EQ(backend->GetActiveScene()->GetName(), "Main");
Scene* const activeScene = SceneManager::Get().GetActiveScene();
ASSERT_NE(activeScene, nullptr);
EXPECT_EQ(activeScene->GetName(), "Main");
const HierarchyModel model =
HierarchyModel::BuildFromScene(backend->GetActiveScene());
HierarchyModel::BuildFromSnapshot(backend->BuildHierarchySnapshot());
EXPECT_FALSE(model.Empty());
SceneManager& sceneManager = SceneManager::Get();