Scene serialization progress
This commit is contained in:
@@ -6,10 +6,10 @@ namespace DaggerFramework.SceneGraph
|
|||||||
{
|
{
|
||||||
public class Entity
|
public class Entity
|
||||||
{
|
{
|
||||||
public EntityLayer? Layer { get; set; }
|
[JsonIgnore] public EntityLayer? Layer { get; set; }
|
||||||
public InputHandler Input => Layer!.Scene.Input;
|
[JsonIgnore] public InputHandler Input => Layer!.Scene.Input;
|
||||||
public AudioBackend Audio => Layer!.Scene.Audio;
|
[JsonIgnore] public AudioBackend Audio => Layer!.Scene.Audio;
|
||||||
public Renderer Renderer => Layer!.Scene.Renderer;
|
[JsonIgnore] public Renderer Renderer => Layer!.Scene.Renderer;
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public void Start() => OnStart();
|
public void Start() => OnStart();
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ namespace DaggerFramework.SceneGraph
|
|||||||
{
|
{
|
||||||
public class EntityLayer : Layer
|
public class EntityLayer : Layer
|
||||||
{
|
{
|
||||||
[JsonInclude] public List<Entity> Entities { get; set; }
|
public List<Entity> Entities { get; set; }
|
||||||
public Camera2d? CurrentCamera { get; set; }
|
public Camera2d? CurrentCamera { get; set; }
|
||||||
|
|
||||||
public EntityLayer(List<Entity> entities)
|
public EntityLayer(List<Entity> entities)
|
||||||
@@ -105,4 +105,12 @@ namespace DaggerFramework.SceneGraph
|
|||||||
}
|
}
|
||||||
private List<Camera2d> _cameraEntities = new();
|
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)]
|
[JsonSourceGenerationOptions(WriteIndented = true)]
|
||||||
[JsonSerializable(typeof(SerializedScene))]
|
[JsonSerializable(typeof(SerializedScene))]
|
||||||
|
[JsonSerializable(typeof(Dictionary<string, Layer>))]
|
||||||
|
[JsonSerializable(typeof(Entity2d))]
|
||||||
|
[JsonSerializable(typeof(Layer))]
|
||||||
|
[JsonSerializable(typeof(EntityLayer))]
|
||||||
internal partial class SerializedSceneContext : JsonSerializerContext
|
internal partial class SerializedSceneContext : JsonSerializerContext
|
||||||
{
|
{
|
||||||
|
|
||||||
|
|||||||
@@ -39,12 +39,11 @@ namespace DaggerFramework.SceneGraph
|
|||||||
Layers = _layers
|
Layers = _layers
|
||||||
};
|
};
|
||||||
|
|
||||||
var sourceGenOptions = new JsonSerializerOptions
|
|
||||||
|
serializedScene.Buffer = JsonSerializer.SerializeToUtf8Bytes(serializedScene, new JsonSerializerOptions
|
||||||
{
|
{
|
||||||
TypeInfoResolver = SerializedSceneContext.Default
|
TypeInfoResolver = SerializedSceneContext.Default
|
||||||
};
|
});
|
||||||
|
|
||||||
serializedScene.Buffer = JsonSerializer.SerializeToUtf8Bytes(serializedScene, typeof(SerializedScene), sourceGenOptions);
|
|
||||||
serializedScene.BufferSize = serializedScene.Buffer.LongLength;
|
serializedScene.BufferSize = serializedScene.Buffer.LongLength;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -5,8 +5,6 @@ using DaggerFramework.Rendering;
|
|||||||
using DaggerFramework.Audio;
|
using DaggerFramework.Audio;
|
||||||
using DaggerFramework.Resources;
|
using DaggerFramework.Resources;
|
||||||
using DaggerFramework.SceneGraph;
|
using DaggerFramework.SceneGraph;
|
||||||
using System.Text.Json;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
|
|
||||||
public class TestGame : Game
|
public class TestGame : Game
|
||||||
|
|||||||
Reference in New Issue
Block a user