diff --git a/Prowl.Editor/EditorWindows/MainMenuItems.cs b/Prowl.Editor/EditorWindows/MainMenuItems.cs index 2b2751c62..39a13f610 100644 --- a/Prowl.Editor/EditorWindows/MainMenuItems.cs +++ b/Prowl.Editor/EditorWindows/MainMenuItems.cs @@ -93,7 +93,7 @@ public static void SaveScene() AssetDatabase.Delete(file); var allGameObjects = SceneManager.AllGameObjects.Where(x => !x.hideFlags.HasFlag(HideFlags.DontSave) && !x.hideFlags.HasFlag(HideFlags.HideAndDontSave)).ToArray(); - scene.GameObjects = Serializer.Serialize(allGameObjects); + scene = Scene.Create(allGameObjects); StringTagConverter.WriteToFile(Serializer.Serialize(scene), file); AssetDatabase.Update(); AssetDatabase.Ping(file); @@ -124,8 +124,7 @@ public static void SaveSceneAs() file = new FileInfo(file.FullName + ".scene"); var allGameObjects = SceneManager.AllGameObjects.Where(x => !x.hideFlags.HasFlag(HideFlags.DontSave) && !x.hideFlags.HasFlag(HideFlags.HideAndDontSave)).ToArray(); - Scene scene = new Scene(); - scene.GameObjects = Serializer.Serialize(allGameObjects); + Scene scene = Scene.Create(allGameObjects); var tag = Serializer.Serialize(scene); StringTagConverter.WriteToFile(tag, file); AssetDatabase.Update(); diff --git a/Prowl.Runtime/Resources/Scene.cs b/Prowl.Runtime/Resources/Scene.cs index 4508615e5..d48a0879e 100644 --- a/Prowl.Runtime/Resources/Scene.cs +++ b/Prowl.Runtime/Resources/Scene.cs @@ -1,9 +1,20 @@ -namespace Prowl.Runtime +using System.Collections.Generic; +using System.Linq; + +namespace Prowl.Runtime { public class Scene : EngineObject { public SerializedProperty GameObjects; + public static Scene Create(GameObject[] all) + { + Scene scene = new Scene(); + Serializer.SerializationContext ctx = new(); + scene.GameObjects = Serializer.Serialize(all, ctx); + return scene; + } + public GameObject[] InstantiateScene() { return Serializer.Deserialize(GameObjects);