using System; using System.IO; using UnityEngine; internal static class BinaryReaderExtensions { public static void ReadNaS(this BinaryReader br, out string str) { if (br.ReadBoolean()) { str = br.ReadString(); } else { str = null; } } public static int Read(this BinaryReader br, out int i) { return i = br.ReadInt32(); } public static float Read(this BinaryReader br, out float f) { return f = br.ReadSingle(); } public static ulong Read(this BinaryReader br, out ulong ul) { return ul = br.ReadUInt64(); } public static bool Read(this BinaryReader br, out bool b) { return b = br.ReadBoolean(); } public static void Read(this BinaryReader br, out Vector2 v2) { br.Read(out v2.x); br.Read(out v2.y); } public static void Read(this BinaryReader br, out Vector3 v3) { br.Read(out v3.x); br.Read(out v3.y); br.Read(out v3.z); } public static void Read(this BinaryReader br, out Vector4 v4) { br.Read(out v4.x); br.Read(out v4.y); br.Read(out v4.z); br.Read(out v4.w); } public static void Read(this BinaryReader br, out Quaternion v4) { br.Read(out v4.x); br.Read(out v4.y); br.Read(out v4.z); br.Read(out v4.w); } public static void Read(this BinaryReader br, out float[] fary) { fary = null; if (br.ReadBoolean()) { int num = br.ReadInt32(); fary = new float[num]; for (int i = 0; i < num; i++) { fary[i] = br.ReadSingle(); } } } public static void Read(this BinaryReader br, out int[] iary) { iary = null; if (br.ReadBoolean()) { int num = br.ReadInt32(); iary = new int[num]; for (int i = 0; i < num; i++) { iary[i] = br.ReadInt32(); } } } public static void Read(this BinaryReader br, out Vector4[] v4ary) { v4ary = null; if (br.ReadBoolean()) { int num = br.ReadInt32(); v4ary = new Vector4[num]; for (int i = 0; i < num; i++) { br.Read(out v4ary[i]); } } } public static T ReadParse(this BinaryReader br, out T value) { return value = (T)((object)Enum.Parse(typeof(T), br.ReadString())); } }