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);
        }
Exemple #3
0
 public GameSerializer(IEnumerable <GameObject> prefabs, ITypeModelBuilder typeModelBuilder)
 {
     m_prefabs          = prefabs.ToReadOnlyCollection();
     m_typeModelBuilder = typeModelBuilder;
 }