35 lines
1.9 KiB
C#
35 lines
1.9 KiB
C#
using UnityEngine;
|
|
using MessagePack;
|
|
using MessagePack.Formatters;
|
|
using MessagePack.Resolvers;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
public class CustomMessagePackResolver : IFormatterResolver
|
|
{
|
|
public static readonly IFormatterResolver Instance = new CustomMessagePackResolver();
|
|
|
|
private static readonly Dictionary<Type, object> formatters = new Dictionary<Type, object>
|
|
{
|
|
{ typeof(XED.Manage.MaterialPropertyData), new MessagePack.Formatters.XED.Manage.MaterialPropertyDataFormatter() },
|
|
{ typeof(XED.Manage.ModelData), new MessagePack.Formatters.XED.Manage.ModelDataFormatter() },
|
|
{ typeof(XED.Manage.SaveData), new MessagePack.Formatters.XED.Manage.SaveDataFormatter() },
|
|
{ typeof(XED.Manage.SavedModelData), new MessagePack.Formatters.XED.Manage.SavedModelDataFormatter() },
|
|
{ typeof(XED.Manage.SerializableMesh), new MessagePack.Formatters.XED.Manage.SerializableMeshFormatter() },
|
|
{ typeof(XED.Manage.SerializableQuaternion), new MessagePack.Formatters.XED.Manage.SerializableQuaternionFormatter() },
|
|
{ typeof(XED.Manage.SerializableVector2), new MessagePack.Formatters.XED.Manage.SerializableVector2Formatter() },
|
|
{ typeof(XED.Manage.SerializableVector3), new MessagePack.Formatters.XED.Manage.SerializableVector3Formatter() },
|
|
{ typeof(XED.Manage.SubmeshData), new MessagePack.Formatters.XED.Manage.SubmeshDataFormatter() },
|
|
{ typeof(XED.Manage.TextureData), new MessagePack.Formatters.XED.Manage.TextureDataFormatter() },
|
|
{ typeof(XED.Manage.TransformData), new MessagePack.Formatters.XED.Manage.TransformDataFormatter() },
|
|
};
|
|
|
|
public IMessagePackFormatter<T> GetFormatter<T>()
|
|
{
|
|
if (formatters.TryGetValue(typeof(T), out var formatter))
|
|
{
|
|
return (IMessagePackFormatter<T>)formatter;
|
|
}
|
|
return StandardResolver.Instance.GetFormatter<T>();
|
|
}
|
|
}
|