using System.Runtime.InteropServices; namespace Shared.Packet.Packets; [Packet(PacketType.Costume)] public struct CostumePacket : IPacket { public const int CostumeNameSize = 0x20; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CostumeNameSize)] public string BodyName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = CostumeNameSize)] public string CapName; public void Serialize(Span data) { Span strData = MemoryMarshal.Cast(data); BodyName.CopyTo(strData[..CostumeNameSize]); CapName.CopyTo(strData[CostumeNameSize..]); } public void Deserialize(Span data) { Span strData = MemoryMarshal.Cast(data); BodyName = new string(strData[..CostumeNameSize].TrimEnd('\0')); CapName = new string(strData[CostumeNameSize..].TrimEnd('\0')); } }