From 6594a4a41fde16fbbfb8a6cd40ea03a286bd4bd7 Mon Sep 17 00:00:00 2001 From: Michael Lidgren Date: Mon, 29 Feb 2016 16:19:19 +0100 Subject: [PATCH] Unity serialization helpers by Frank Versnel --- Lidgren.Network/Lidgren.Network.csproj | 1 + .../Platform/PlatformUnityExtras.cs | 188 ++++++++++++++++++ 2 files changed, 189 insertions(+) create mode 100644 Lidgren.Network/Platform/PlatformUnityExtras.cs diff --git a/Lidgren.Network/Lidgren.Network.csproj b/Lidgren.Network/Lidgren.Network.csproj index 608b942..7ab1b31 100644 --- a/Lidgren.Network/Lidgren.Network.csproj +++ b/Lidgren.Network/Lidgren.Network.csproj @@ -138,6 +138,7 @@ + diff --git a/Lidgren.Network/Platform/PlatformUnityExtras.cs b/Lidgren.Network/Platform/PlatformUnityExtras.cs new file mode 100644 index 0000000..a1d93db --- /dev/null +++ b/Lidgren.Network/Platform/PlatformUnityExtras.cs @@ -0,0 +1,188 @@ +#if UNITY +using UnityEngine; + +namespace Lidgren.Network +{ + public partial class NetBuffer + { + public void Write(Vector2 vector) + { + Write(vector.x); + Write(vector.y); + } + + public static Vector2 ReadVector2() + { + return new Vector2(ReadSingle(), ReadSingle()); + } + + public void Write(Vector3 vector) + { + Write(vector.x); + Write(vector.y); + Write(vector.z); + } + + public Vector3 ReadVector3() + { + return new Vector3( + x: ReadSingle(), + y: ReadSingle(), + z: ReadSingle()); + } + + public void Write(Vector4 vector) + { + Write(vector.x); + Write(vector.y); + Write(vector.z); + Write(vector.w); + } + + public Vector4 ReadVector4() + { + return new Vector4( + x: ReadSingle(), + y: ReadSingle(), + z: ReadSingle(), + w: ReadSingle()); + } + + public void Write(Quaternion quaternion) + { + Write(quaternion.x); + Write(quaternion.y); + Write(quaternion.z); + Write(quaternion.w); + } + + public Quaternion ReadQuaternion() + { + return new Quaternion( + x: ReadFloat(), + y: ReadFloat(), + z: ReadFloat(), + w: ReadFloat()); + } + + public void WriteRgbColor(Color32 color) + { + Write(color.r); + Write(color.g); + Write(color.b); + } + + public Color32 ReadRgbColor() + { + return new Color32( + r: ReadByte(), + g: ReadByte(), + b: ReadByte(), + a: byte.MaxValue); + } + + public void WriteRgbaColor(Color32 color) + { + Write(color.r); + Write(color.g); + Write(color.b); + Write(color.a); + } + + public Color32 ReadRgbaColor() + { + return new Color32( + r: ReadByte(), + g: ReadByte(), + b: ReadByte(), + a: ReadByte()); + } + + public void Write(Ray ray) + { + Write(ray.direction); + Write(ray.origin); + } + + public Ray ReadRay() + { + return new Ray( + direction: ReadVector3(), + origin: ReadVector3()); + } + + public void Write(Plane plane) + { + Write(plane.normal); + Write(plane.distance); + } + + public Plane ReadPlane() + { + return new Plane( + inNormal: ReadVector3(), + d: ReadSingle()); + } + + public void Write(Matrix4x4 matrix) + { + Write(matrix.m00); + Write(matrix.m01); + Write(matrix.m02); + Write(matrix.m03); + Write(matrix.m10); + Write(matrix.m11); + Write(matrix.m12); + Write(matrix.m13); + Write(matrix.m20); + Write(matrix.m21); + Write(matrix.m22); + Write(matrix.m23); + Write(matrix.m30); + Write(matrix.m31); + Write(matrix.m32); + Write(matrix.m33); + } + + public Matrix4x4 ReadMatrix4X4() + { + return new Matrix4x4 + { + m00 = ReadSingle(), + m01 = ReadSingle(), + m02 = ReadSingle(), + m03 = ReadSingle(), + m10 = ReadSingle(), + m11 = ReadSingle(), + m12 = ReadSingle(), + m13 = ReadSingle(), + m20 = ReadSingle(), + m21 = ReadSingle(), + m22 = ReadSingle(), + m23 = ReadSingle(), + m30 = ReadSingle(), + m31 = ReadSingle(), + m32 = ReadSingle(), + m33 = ReadSingle() + }; + } + + public void Write(Rect rect) + { + Write(rect.xMin); + Write(rect.yMin); + Write(rect.width); + Write(rect.height); + } + + public Rect ReadRect() + { + return new Rect( + x: ReadSingle(), + y: ReadSingle(), + width: ReadSingle(), + height: ReadSingle()); + } + } +} +#endif \ No newline at end of file