Scene serialization progress
This commit is contained in:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
{
|
||||
}
|
||||
}
|
||||
@@ -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
|
||||
{
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user