Files
Studio/Assets/Scripts/CustomMessagePackResolver.cs

35 lines
1.9 KiB
C#
Raw Normal View History

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>
{
2025-05-20 16:25:58 +09:00
{ typeof(Studio.Manage.MaterialPropertyData), new MessagePack.Formatters.XED.Manage.MaterialPropertyDataFormatter() },
{ typeof(Studio.Manage.ModelData), new MessagePack.Formatters.XED.Manage.ModelDataFormatter() },
{ typeof(Studio.Manage.SaveData), new MessagePack.Formatters.XED.Manage.SaveDataFormatter() },
{ typeof(Studio.Manage.SavedModelData), new MessagePack.Formatters.XED.Manage.SavedModelDataFormatter() },
{ typeof(Studio.Manage.SerializableMesh), new MessagePack.Formatters.XED.Manage.SerializableMeshFormatter() },
{ typeof(Studio.Manage.SerializableQuaternion), new MessagePack.Formatters.XED.Manage.SerializableQuaternionFormatter() },
{ typeof(Studio.Manage.SerializableVector2), new MessagePack.Formatters.XED.Manage.SerializableVector2Formatter() },
{ typeof(Studio.Manage.SerializableVector3), new MessagePack.Formatters.XED.Manage.SerializableVector3Formatter() },
{ typeof(Studio.Manage.SubmeshData), new MessagePack.Formatters.XED.Manage.SubmeshDataFormatter() },
{ typeof(Studio.Manage.TextureData), new MessagePack.Formatters.XED.Manage.TextureDataFormatter() },
{ typeof(Studio.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>();
}
}