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.Asset.MaterialPropertyDataFormatter() },
|
|
{ typeof(XED.Manage.ModelData), new MessagePack.Formatters.XED.Asset.ModelDataFormatter() },
|
|
{ typeof(XED.Manage.SaveData), new MessagePack.Formatters.XED.Asset.SaveDataFormatter() },
|
|
{ typeof(XED.Manage.SavedModelData), new MessagePack.Formatters.XED.Asset.SavedModelDataFormatter() },
|
|
{ typeof(XED.Manage.SerializableMesh), new MessagePack.Formatters.XED.Asset.SerializableMeshFormatter() },
|
|
{ typeof(XED.Manage.SerializableQuaternion), new MessagePack.Formatters.XED.Asset.SerializableQuaternionFormatter() },
|
|
{ typeof(XED.Manage.SerializableVector2), new MessagePack.Formatters.XED.Asset.SerializableVector2Formatter() },
|
|
{ typeof(XED.Manage.SerializableVector3), new MessagePack.Formatters.XED.Asset.SerializableVector3Formatter() },
|
|
{ typeof(XED.Manage.SubmeshData), new MessagePack.Formatters.XED.Asset.SubmeshDataFormatter() },
|
|
{ typeof(XED.Manage.TextureData), new MessagePack.Formatters.XED.Asset.TextureDataFormatter() },
|
|
{ typeof(XED.Manage.TransformData), new MessagePack.Formatters.XED.Asset.TransformDataFormatter() },
|
|
};
|
|
|
|
public IMessagePackFormatter<T> GetFormatter<T>()
|
|
{
|
|
if (formatters.TryGetValue(typeof(T), out var formatter))
|
|
{
|
|
return (IMessagePackFormatter<T>)formatter;
|
|
}
|
|
return StandardResolver.Instance.GetFormatter<T>();
|
|
}
|
|
}
|