diff --git a/DaggerFramework/Source/SceneGraph/Entities/Entity.cs b/DaggerFramework/Source/SceneGraph/Entities/Entity.cs index d986f18..1caae52 100644 --- a/DaggerFramework/Source/SceneGraph/Entities/Entity.cs +++ b/DaggerFramework/Source/SceneGraph/Entities/Entity.cs @@ -6,10 +6,10 @@ namespace DaggerFramework.SceneGraph { public class Entity { - public EntityLayer? Layer { get; set; } - public InputHandler Input => Layer!.Scene.Input; - public AudioBackend Audio => Layer!.Scene.Audio; - public Renderer Renderer => Layer!.Scene.Renderer; + [JsonIgnore] public EntityLayer? Layer { get; set; } + [JsonIgnore] public InputHandler Input => Layer!.Scene.Input; + [JsonIgnore] public AudioBackend Audio => Layer!.Scene.Audio; + [JsonIgnore] public Renderer Renderer => Layer!.Scene.Renderer; public int Id { get; set; } public void Start() => OnStart(); diff --git a/DaggerFramework/Source/SceneGraph/EntityLayer.cs b/DaggerFramework/Source/SceneGraph/EntityLayer.cs index ccd6f07..32306cb 100644 --- a/DaggerFramework/Source/SceneGraph/EntityLayer.cs +++ b/DaggerFramework/Source/SceneGraph/EntityLayer.cs @@ -6,7 +6,7 @@ namespace DaggerFramework.SceneGraph { public class EntityLayer : Layer { - [JsonInclude] public List Entities { get; set; } + public List Entities { get; set; } public Camera2d? CurrentCamera { get; set; } public EntityLayer(List entities) @@ -105,4 +105,12 @@ namespace DaggerFramework.SceneGraph } private List _cameraEntities = new(); } + + [JsonSourceGenerationOptions(WriteIndented = true)] + [JsonSerializable(typeof(EntityLayer))] + [JsonSerializable(typeof(Entity))] + [JsonSerializable(typeof(List))] + internal partial class EntityLayerContext : JsonSerializerContext + { + } } \ No newline at end of file diff --git a/DaggerFramework/Source/SceneGraph/Resources/SerializedScene.cs b/DaggerFramework/Source/SceneGraph/Resources/SerializedScene.cs index 858ef03..1bb91f5 100644 --- a/DaggerFramework/Source/SceneGraph/Resources/SerializedScene.cs +++ b/DaggerFramework/Source/SceneGraph/Resources/SerializedScene.cs @@ -13,6 +13,10 @@ namespace DaggerFramework.SceneGraph [JsonSourceGenerationOptions(WriteIndented = true)] [JsonSerializable(typeof(SerializedScene))] + [JsonSerializable(typeof(Dictionary))] + [JsonSerializable(typeof(Entity2d))] + [JsonSerializable(typeof(Layer))] + [JsonSerializable(typeof(EntityLayer))] internal partial class SerializedSceneContext : JsonSerializerContext { diff --git a/DaggerFramework/Source/SceneGraph/Scene.cs b/DaggerFramework/Source/SceneGraph/Scene.cs index 3970d28..b514cf4 100644 --- a/DaggerFramework/Source/SceneGraph/Scene.cs +++ b/DaggerFramework/Source/SceneGraph/Scene.cs @@ -39,12 +39,11 @@ namespace DaggerFramework.SceneGraph Layers = _layers }; - var sourceGenOptions = new JsonSerializerOptions + + serializedScene.Buffer = JsonSerializer.SerializeToUtf8Bytes(serializedScene, new JsonSerializerOptions { TypeInfoResolver = SerializedSceneContext.Default - }; - - serializedScene.Buffer = JsonSerializer.SerializeToUtf8Bytes(serializedScene, typeof(SerializedScene), sourceGenOptions); + }); serializedScene.BufferSize = serializedScene.Buffer.LongLength; return true; diff --git a/TestGame/TestGame.cs b/TestGame/TestGame.cs index 0dc5022..df40a9b 100644 --- a/TestGame/TestGame.cs +++ b/TestGame/TestGame.cs @@ -5,8 +5,6 @@ using DaggerFramework.Rendering; using DaggerFramework.Audio; using DaggerFramework.Resources; using DaggerFramework.SceneGraph; -using System.Text.Json; -using System.Text.Json.Serialization; public class TestGame : Game