fix(core): Removes byte indicator for Enum (#614)

This commit is contained in:
Kamron Batman 2021-05-24 01:14:10 -07:00 committed by GitHub
parent ca5a06e9a2
commit c3f414f04f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 2 additions and 8 deletions

View file

@ -70,7 +70,7 @@ namespace Server
int Read(Span<byte> buffer);
unsafe T ReadEnum<T>() where T : unmanaged, Enum
{
switch (ReadByte())
switch (sizeof(T))
{
case 1:
{

View file

@ -118,32 +118,26 @@ namespace Server
void Write(ReadOnlySpan<byte> bytes);
unsafe void WriteEnum<T>(T value) where T : unmanaged, Enum
{
var size = sizeof(T);
switch (size)
switch (sizeof(T))
{
default: throw new ArgumentException($"Argument of type {typeof(T)} is not a normal enum");
case 1:
{
Write((byte)1);
Write(*(byte*)&value);
break;
}
case 2:
{
Write((byte)2);
Write(*(ushort*)&value);
break;
}
case 4:
{
Write((byte)3);
WriteEncodedInt(*(int*)&value);
break;
}
case 8:
{
Write((byte)4);
Write(*(ulong*)&value);
break;
}