Newer
Older
Simple-Multiplayer-Unity3D / Assets / Scripts / Network / NetworkSerializer.cs
using System;
using System.IO;
using Unity.VisualScripting;

namespace Multiplayer.Network
{
    public static class NetworkSerializer
    {
        // Optimized serialization with buffer reuse
        private static byte[] _serializationBuffer = new byte[1024];

        public static byte[] ToBytes<T>(T obj) where T : INetworkSerializable
        {
            using (MemoryStream ms = new MemoryStream(_serializationBuffer, true))
            {
                obj.Serialize(new BinaryWriter(ms));
                return ms.ToArray();
            }
        }

        public static T FromBytes<T>(byte[] data) where T : INetworkSerializable, new()
        {
            using (MemoryStream ms = new MemoryStream(data))
            {
                var obj = new T();
                obj.Deserialize(new BinaryReader(ms));
                return obj;
            }
        }
    }
}