BinaryReaderExtensions.cs 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. using System;
  2. using System.IO;
  3. using UnityEngine;
  4. internal static class BinaryReaderExtensions
  5. {
  6. public static void ReadNaS(this BinaryReader br, out string str)
  7. {
  8. if (br.ReadBoolean())
  9. {
  10. str = br.ReadString();
  11. }
  12. else
  13. {
  14. str = null;
  15. }
  16. }
  17. public static int Read(this BinaryReader br, out int i)
  18. {
  19. return i = br.ReadInt32();
  20. }
  21. public static float Read(this BinaryReader br, out float f)
  22. {
  23. return f = br.ReadSingle();
  24. }
  25. public static ulong Read(this BinaryReader br, out ulong ul)
  26. {
  27. return ul = br.ReadUInt64();
  28. }
  29. public static bool Read(this BinaryReader br, out bool b)
  30. {
  31. return b = br.ReadBoolean();
  32. }
  33. public static void Read(this BinaryReader br, out Vector2 v2)
  34. {
  35. br.Read(out v2.x);
  36. br.Read(out v2.y);
  37. }
  38. public static void Read(this BinaryReader br, out Vector3 v3)
  39. {
  40. br.Read(out v3.x);
  41. br.Read(out v3.y);
  42. br.Read(out v3.z);
  43. }
  44. public static void Read(this BinaryReader br, out Vector4 v4)
  45. {
  46. br.Read(out v4.x);
  47. br.Read(out v4.y);
  48. br.Read(out v4.z);
  49. br.Read(out v4.w);
  50. }
  51. public static void Read(this BinaryReader br, out Quaternion v4)
  52. {
  53. br.Read(out v4.x);
  54. br.Read(out v4.y);
  55. br.Read(out v4.z);
  56. br.Read(out v4.w);
  57. }
  58. public static void Read(this BinaryReader br, out float[] fary)
  59. {
  60. fary = null;
  61. if (br.ReadBoolean())
  62. {
  63. int num = br.ReadInt32();
  64. fary = new float[num];
  65. for (int i = 0; i < num; i++)
  66. {
  67. fary[i] = br.ReadSingle();
  68. }
  69. }
  70. }
  71. public static void Read(this BinaryReader br, out int[] iary)
  72. {
  73. iary = null;
  74. if (br.ReadBoolean())
  75. {
  76. int num = br.ReadInt32();
  77. iary = new int[num];
  78. for (int i = 0; i < num; i++)
  79. {
  80. iary[i] = br.ReadInt32();
  81. }
  82. }
  83. }
  84. public static void Read(this BinaryReader br, out Vector4[] v4ary)
  85. {
  86. v4ary = null;
  87. if (br.ReadBoolean())
  88. {
  89. int num = br.ReadInt32();
  90. v4ary = new Vector4[num];
  91. for (int i = 0; i < num; i++)
  92. {
  93. br.Read(out v4ary[i]);
  94. }
  95. }
  96. }
  97. public static T ReadParse<T>(this BinaryReader br, out T value)
  98. {
  99. return value = (T)((object)Enum.Parse(typeof(T), br.ReadString()));
  100. }
  101. }