Files
EndlessHostRoles/Modules/Extensions/HazelExtensions.cs
T

82 lines
2.0 KiB
C#

using System.Text;
using Hazel;
using UnityEngine;
namespace EHR;
public static class HazelExtensions
{
// -------------------------------------------------------------------------------------------------------------------------
extension(MessageWriter writer)
{
public void Write(Vector2 vector)
{
NetHelpers.WriteVector2(vector, writer);
}
public void Write(Vector3 vector)
{
writer.Write(vector.x);
writer.Write(vector.y);
writer.Write(vector.z);
}
public void Write(Color color)
{
writer.Write(color.r);
writer.Write(color.g);
writer.Write(color.b);
writer.Write(color.a);
}
}
// -------------------------------------------------------------------------------------------------------------------------
extension(MessageReader reader)
{
public Vector2 ReadVector2()
{
return NetHelpers.ReadVector2(reader);
}
public Vector3 ReadVector3()
{
float x = reader.ReadSingle();
float y = reader.ReadSingle();
float z = reader.ReadSingle();
return new(x, y, z);
}
public Color ReadColor()
{
float r = reader.ReadSingle();
float g = reader.ReadSingle();
float b = reader.ReadSingle();
float a = reader.ReadSingle();
return new(r, g, b, a);
}
}
// -------------------------------------------------------------------------------------------------------------------------
private static int GetPackedUIntSize(uint value)
{
int count = 0;
do
{
value >>= 7;
count++;
}
while (value != 0);
return count;
}
private static int GetStringWriteSize(string text)
{
int byteCount = Encoding.UTF8.GetByteCount(text);
return GetPackedUIntSize((uint)byteCount) + byteCount;
}
}