|
|
- using System.Collections;
- using System.Collections.Generic;
- using System.Runtime.Serialization.Formatters.Binary;
- using System.Runtime.Serialization;
- using System.IO;
- using UnityEngine;
-
- namespace Networking
- {
-
- public static class Utility
- {
- public static byte[] ObjectToByteArray<T>(T obj)
- {
- if (obj == null)
- return null;
- BinaryFormatter bf = new BinaryFormatter();
-
- SurrogateSelector surrogateSelector = new SurrogateSelector();
- Vector3SerializationSurrogate vector3SS = new Vector3SerializationSurrogate();
- ColorSerializationSurrogate colorSS = new ColorSerializationSurrogate();
- surrogateSelector.AddSurrogate(typeof(Vector3), new StreamingContext(StreamingContextStates.All), vector3SS);
- surrogateSelector.AddSurrogate(typeof(Color), new StreamingContext(StreamingContextStates.All), colorSS);
-
- bf.SurrogateSelector = surrogateSelector;
-
- MemoryStream ms = new MemoryStream();
- bf.Serialize(ms, obj);
- return ms.ToArray();
- }
-
- public static T ByteArrayToObject<T>(byte[] arrBytes)
- {
- MemoryStream memStream = new MemoryStream();
- BinaryFormatter bf = new BinaryFormatter();
-
- SurrogateSelector surrogateSelector = new SurrogateSelector();
- Vector3SerializationSurrogate vector3SS = new Vector3SerializationSurrogate();
- ColorSerializationSurrogate colorSS = new ColorSerializationSurrogate();
- surrogateSelector.AddSurrogate(typeof(Vector3), new StreamingContext(StreamingContextStates.All), vector3SS);
- surrogateSelector.AddSurrogate(typeof(Color), new StreamingContext(StreamingContextStates.All), colorSS);
-
- bf.SurrogateSelector = surrogateSelector;
-
- memStream.Write(arrBytes, 0, arrBytes.Length);
- memStream.Seek(0, SeekOrigin.Begin);
- T obj = (T)bf.Deserialize(memStream);
- return obj;
- }
-
- }
- }
|