feat: added entity converter

This commit is contained in:
2025-04-20 00:43:24 +03:00
parent 5bcc256777
commit 5fa7420c04
3 changed files with 76 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
using Syntriax.Engine.Core;
using Syntriax.Engine.Core.Factory;
using YamlDotNet.Core;
using YamlDotNet.Serialization;
namespace Syntriax.Engine.Serialization;
public class EntityConverter : IEngineTypeYamlConverter
{
public bool Accepts(Type type) => typeof(IEntity).IsAssignableFrom(type);
public object? ReadYaml(IParser parser, Type type, ObjectDeserializer rootDeserializer)
{
EntityReference entityReference = (EntityReference)rootDeserializer(typeof(EntityReference))!;
IEntity entity = (IEntity)TypeFactory.Get(entityReference.TypeContainer.Type);
return entity;
}
public void WriteYaml(IEmitter emitter, object? value, Type type, ObjectSerializer serializer)
{
IEntity? entity = (IEntity)value!;
serializer(new EntityReference(entity), typeof(EntityReference));
}
}