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 formatters = new Dictionary { { typeof(Studio.AssetTool.MaterialPropertyData), new MessagePack.Formatters.XED.Manage.MaterialPropertyDataFormatter() }, { typeof(Studio.AssetTool.ModelData), new MessagePack.Formatters.XED.Manage.ModelDataFormatter() }, { typeof(Studio.AssetTool.SaveData), new MessagePack.Formatters.XED.Manage.SaveDataFormatter() }, { typeof(Studio.AssetTool.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.AssetTool.TextureData), new MessagePack.Formatters.XED.Manage.TextureDataFormatter() }, { typeof(Studio.Manage.TransformData), new MessagePack.Formatters.XED.Manage.TransformDataFormatter() }, }; public IMessagePackFormatter GetFormatter() { if (formatters.TryGetValue(typeof(T), out var formatter)) { return (IMessagePackFormatter)formatter; } return StandardResolver.Instance.GetFormatter(); } }