Scene serialization progress

This commit is contained in:
2024-01-21 20:56:04 +01:00
parent 62e0e013f1
commit 8b82e83c60
5 changed files with 20 additions and 11 deletions

View File

@@ -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();

View File

@@ -6,7 +6,7 @@ namespace DaggerFramework.SceneGraph
{
public class EntityLayer : Layer
{
[JsonInclude] public List<Entity> Entities { get; set; }
public List<Entity> Entities { get; set; }
public Camera2d? CurrentCamera { get; set; }
public EntityLayer(List<Entity> entities)
@@ -105,4 +105,12 @@ namespace DaggerFramework.SceneGraph
}
private List<Camera2d> _cameraEntities = new();
}
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(EntityLayer))]
[JsonSerializable(typeof(Entity))]
[JsonSerializable(typeof(List<Entity>))]
internal partial class EntityLayerContext : JsonSerializerContext
{
}
}

View File

@@ -13,6 +13,10 @@ namespace DaggerFramework.SceneGraph
[JsonSourceGenerationOptions(WriteIndented = true)]
[JsonSerializable(typeof(SerializedScene))]
[JsonSerializable(typeof(Dictionary<string, Layer>))]
[JsonSerializable(typeof(Entity2d))]
[JsonSerializable(typeof(Layer))]
[JsonSerializable(typeof(EntityLayer))]
internal partial class SerializedSceneContext : JsonSerializerContext
{

View File

@@ -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;

View File

@@ -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