using System.Collections; using System.Collections.Generic; using Unity.Mathematics; using System; using System.IO; namespace BITKit { public static class UnityMathematicsSupportExtensions { #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_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); } } }