-
Notifications
You must be signed in to change notification settings - Fork 516
/
NetworkGuid.cs
30 lines (27 loc) · 928 Bytes
/
NetworkGuid.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
using System;
using Unity.Netcode;
namespace Unity.BossRoom.Infrastructure
{
public struct NetworkGuid : INetworkSerializeByMemcpy
{
public ulong FirstHalf;
public ulong SecondHalf;
}
public static class NetworkGuidExtensions
{
public static NetworkGuid ToNetworkGuid(this Guid id)
{
var networkId = new NetworkGuid();
networkId.FirstHalf = BitConverter.ToUInt64(id.ToByteArray(), 0);
networkId.SecondHalf = BitConverter.ToUInt64(id.ToByteArray(), 8);
return networkId;
}
public static Guid ToGuid(this NetworkGuid networkId)
{
var bytes = new byte[16];
Buffer.BlockCopy(BitConverter.GetBytes(networkId.FirstHalf), 0, bytes, 0, 8);
Buffer.BlockCopy(BitConverter.GetBytes(networkId.SecondHalf), 0, bytes, 8, 8);
return new Guid(bytes);
}
}
}