添加 Components 和 Scene 序列化支持
- Component: 添加 Serialize/Deserialize 虚函数 - TransformComponent: 实现 Transform 数据的序列化/反序列化 - GameObject: 实现对象序列化/反序列化 - Scene: 实现 Save/Load 方法,支持场景文件保存和加载 - 测试: 添加 Save_And_Load 和 Save_ContainsGameObjectData 测试
This commit is contained in:
@@ -2,8 +2,12 @@
|
||||
#include <XCEngine/Scene/Scene.h>
|
||||
#include <XCEngine/Components/GameObject.h>
|
||||
#include <XCEngine/Components/TransformComponent.h>
|
||||
#include <XCEngine/Math/Vector3.h>
|
||||
#include <fstream>
|
||||
#include <sstream>
|
||||
|
||||
using namespace XCEngine::Components;
|
||||
using namespace XCEngine::Math;
|
||||
|
||||
namespace {
|
||||
|
||||
@@ -214,4 +218,34 @@ TEST_F(SceneTest, OnGameObjectDestroyed_Event) {
|
||||
EXPECT_TRUE(eventFired);
|
||||
}
|
||||
|
||||
TEST_F(SceneTest, Save_And_Load) {
|
||||
GameObject* go = testScene->CreateGameObject("SavedObject");
|
||||
go->GetTransform()->SetLocalPosition(XCEngine::Math::Vector3(1.0f, 2.0f, 3.0f));
|
||||
go->SetActive(true);
|
||||
|
||||
testScene->Save("test_scene.scene");
|
||||
|
||||
Scene loadedScene;
|
||||
loadedScene.Load("test_scene.scene");
|
||||
|
||||
GameObject* loadedGo = loadedScene.Find("SavedObject");
|
||||
EXPECT_NE(loadedGo, nullptr);
|
||||
EXPECT_EQ(loadedGo->GetTransform()->GetLocalPosition(), XCEngine::Math::Vector3(1.0f, 2.0f, 3.0f));
|
||||
}
|
||||
|
||||
TEST_F(SceneTest, Save_ContainsGameObjectData) {
|
||||
testScene->CreateGameObject("Player");
|
||||
testScene->CreateGameObject("Enemy");
|
||||
|
||||
testScene->Save("test_scene_multi.scene");
|
||||
|
||||
std::ifstream file("test_scene_multi.scene");
|
||||
std::stringstream buffer;
|
||||
buffer << file.rdbuf();
|
||||
std::string content = buffer.str();
|
||||
|
||||
EXPECT_TRUE(content.find("Player") != std::string::npos);
|
||||
EXPECT_TRUE(content.find("Enemy") != std::string::npos);
|
||||
}
|
||||
|
||||
} // namespace
|
||||
Reference in New Issue
Block a user