private void BasicTestWithModelBuilder(ITypeModelBuilder builder, IEnumerable <GameObject> prefabs) { GameObject instantiated = Object.Instantiate(m_testPrefab); string testName = Guid.NewGuid().ToString(); string testValue = Guid.NewGuid().ToString(); Vector3 testPosition = new Vector3(10, 20, 30); instantiated.name = testName; instantiated.GetComponent <TestSavableBehaviour>().savableValue = testValue; instantiated.transform.position = testPosition; SaveGame saveGame = SaveGamePacker.PackSaveGame(new[] { instantiated }, builder.GetSavableMonobehaviours()); SerializeAndUnserialize(saveGame, builder, prefabs); GameObject testObject = GameObject.Find(testName); Assert.NotNull(testObject); Assert.AreEqual(testName, testObject.name); Assert.NotNull(testObject.GetComponent <TestSavableBehaviour>()); Assert.AreEqual(testValue, testObject.GetComponent <TestSavableBehaviour>().savableValue); Assert.AreEqual(testPosition, testObject.transform.position); }
private SaveGame SerializeAndUnserialize(SaveGame saveGame, ITypeModelBuilder builder, IEnumerable <GameObject> prefabs) { var serializer = new GameSerializer(prefabs, builder); byte[] output; using (var s = new MemoryStream()) { serializer.Serialize(s, saveGame); output = s.ToArray(); } foreach (var gameObject in saveGame.GameObjects) { Object.DestroyImmediate(gameObject); } SaveGame deserialized; using (var s = new MemoryStream(output)) { deserialized = serializer.Deserialize <SaveGame>(s); } Assert.NotNull(deserialized); return(deserialized); }
public GameSerializer(IEnumerable <GameObject> prefabs, ITypeModelBuilder typeModelBuilder) { m_prefabs = prefabs.ToReadOnlyCollection(); m_typeModelBuilder = typeModelBuilder; }