1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556 |
- using System;
- using System.ComponentModel;
- using System.IO;
- using ProtoBuf.Meta;
- using Unity.Mathematics;
- namespace ET
- {
- public static class ProtobufHelper
- {
- public static void Init()
- {
- }
-
- static ProtobufHelper()
- {
- RuntimeTypeModel.Default.Add(typeof(float2), false).Add("x", "y");
- RuntimeTypeModel.Default.Add(typeof(float3), false).Add("x", "y", "z");
- RuntimeTypeModel.Default.Add(typeof(float4), false).Add("x", "y", "z", "w");
- RuntimeTypeModel.Default.Add(typeof(quaternion), false).Add("value");
- }
-
- public static object Deserialize(Type type, byte[] bytes, int index, int count)
- {
- using MemoryStream stream = new MemoryStream(bytes, index, count);
- object o = ProtoBuf.Serializer.Deserialize(type, stream);
- if (o is ISupportInitialize supportInitialize)
- {
- supportInitialize.EndInit();
- }
- return o;
- }
- public static byte[] Serialize(object message)
- {
- using MemoryStream stream = new MemoryStream();
- ProtoBuf.Serializer.Serialize(stream, message);
- return stream.ToArray();
- }
- public static void Serialize(object message, Stream stream)
- {
- ProtoBuf.Serializer.Serialize(stream, message);
- }
- public static object Deserialize(Type type, Stream stream)
- {
- object o = ProtoBuf.Serializer.Deserialize(type, stream);
- if (o is ISupportInitialize supportInitialize)
- {
- supportInitialize.EndInit();
- }
- return o;
- }
- }
- }
|