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 { 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 { 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 { 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 { public override quaternion ReadBinary(BinaryReader reader) { return reader.ReadFloat4(); } public override void WriteBinary(BinaryWriter writer, quaternion value) { writer.WriteQuaternion(value); } } }