Net.Like.Xue.Tokyo/Assets/BITKit/Core/Binary/UnityMathematicsSupport.cs

129 lines
3.7 KiB
C#

using System;
using System.Buffers;
using System.IO;
using MemoryPack;
using Unity.Mathematics;
namespace BITKit
{
public static class UnityMathematicsSupportExtensions
{
#region float2
public static float2 ReadFloat2(this BinaryReader reader)
{
return new float2()
{
x = reader.ReadSingle(),
y = reader.ReadSingle(),
};
}
public static void WriteFloat2(this BinaryWriter writer, float2 value)
{
writer.Write(value.x);
writer.Write(value.y);
}
#endregion
#region float3
public static float3 ReadFloat3(this BinaryReader reader)
{
return new float3()
{
x = reader.ReadSingle(),
y = reader.ReadSingle(),
z = reader.ReadSingle(),
};
}
public static void WriteFloat3(this BinaryWriter writer, float3 value)
{
//value.x = MathB.Fix(value.x);
//value.y = MathB.Fix(value.y);
//value.z = MathB.Fix(value.z);
writer.Write(value.x);
writer.Write(value.y);
writer.Write(value.z);
}
#endregion
#region float4
public static float4 ReadFloat4(this BinaryReader reader)
{
return new float4()
{
x = reader.ReadSingle(),
y = reader.ReadSingle(),
z = reader.ReadSingle(),
w = reader.ReadSingle(),
};
}
public static void WriteFloat4(this BinaryWriter writer, float4 value)
{
//value.x = MathB.Fix(value.x);
//value.y = MathB.Fix(value.y);
//value.z = MathB.Fix(value.z);
//value.w = MathB.Fix(value.z);
writer.Write(value.x);
writer.Write(value.y);
writer.Write(value.z);
writer.Write(value.w);
}
#endregion
#region quaternion
public static quaternion ReadQuaternion(this BinaryReader reader)
{
return new(reader.ReadFloat4());
}
public static void WriteQuaternion(this BinaryWriter writer, quaternion value)
{
writer.WriteFloat4(value.value);
}
#endregion
}
public class UnityMathematicsSupport_float2 : NetMessageReader<float2>
{
public override float2 ReadBinary(BinaryReader reader)
{
return reader.ReadFloat2();
}
public override void WriteBinary(BinaryWriter writer, float2 value)
{
writer.WriteFloat2(value);
}
}
public class UnityMathematicsSupport_float3 : NetMessageReader<float3>
{
public override float3 ReadBinary(BinaryReader reader)
{
return reader.ReadFloat3();
}
public override void WriteBinary(BinaryWriter writer, float3 value)
{
writer.WriteFloat3(value);
}
}
public class UnityMathematicsSupport_float4 : NetMessageReader<float4>
{
public override float4 ReadBinary(BinaryReader reader)
{
return reader.ReadFloat4();
}
public override void WriteBinary(BinaryWriter writer, float4 value)
{
writer.WriteFloat4(value);
}
}
public class UnityMathematicsSupport_quaternion : NetMessageReader<quaternion>
{
public override quaternion ReadBinary(BinaryReader reader)
{
return reader.ReadFloat4();
}
public override void WriteBinary(BinaryWriter writer, quaternion value)
{
writer.WriteQuaternion(value);
}
}
}