Files
Studio/Assets/Scripts/CustomMessagePackResolver.cs
2025-04-01 15:41:31 +09:00

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>();
}
}