float4x3.gen.cs 26 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460
  1. //------------------------------------------------------------------------------
  2. // <auto-generated>
  3. // This code was generated by a tool.
  4. //
  5. // Changes to this file may cause incorrect behavior and will be lost if
  6. // the code is regenerated.
  7. // </auto-generated>
  8. //------------------------------------------------------------------------------
  9. using System;
  10. using System.Runtime.CompilerServices;
  11. #pragma warning disable 0660, 0661
  12. namespace Unity.Mathematics
  13. {
  14. [System.Serializable]
  15. public partial struct float4x3 : System.IEquatable<float4x3>, IFormattable
  16. {
  17. public float4 c0;
  18. public float4 c1;
  19. public float4 c2;
  20. /// <summary>float4x3 zero value.</summary>
  21. public static readonly float4x3 zero;
  22. /// <summary>Constructs a float4x3 matrix from three float4 vectors.</summary>
  23. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  24. public float4x3(float4 c0, float4 c1, float4 c2)
  25. {
  26. this.c0 = c0;
  27. this.c1 = c1;
  28. this.c2 = c2;
  29. }
  30. /// <summary>Constructs a float4x3 matrix from 12 float values given in row-major order.</summary>
  31. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  32. public float4x3(float m00, float m01, float m02,
  33. float m10, float m11, float m12,
  34. float m20, float m21, float m22,
  35. float m30, float m31, float m32)
  36. {
  37. this.c0 = new float4(m00, m10, m20, m30);
  38. this.c1 = new float4(m01, m11, m21, m31);
  39. this.c2 = new float4(m02, m12, m22, m32);
  40. }
  41. /// <summary>Constructs a float4x3 matrix from a single float value by assigning it to every component.</summary>
  42. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  43. public float4x3(float v)
  44. {
  45. this.c0 = v;
  46. this.c1 = v;
  47. this.c2 = v;
  48. }
  49. /// <summary>Constructs a float4x3 matrix from a single bool value by converting it to float and assigning it to every component.</summary>
  50. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  51. public float4x3(bool v)
  52. {
  53. this.c0 = math.select(new float4(0.0f), new float4(1.0f), v);
  54. this.c1 = math.select(new float4(0.0f), new float4(1.0f), v);
  55. this.c2 = math.select(new float4(0.0f), new float4(1.0f), v);
  56. }
  57. /// <summary>Constructs a float4x3 matrix from a bool4x3 matrix by componentwise conversion.</summary>
  58. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  59. public float4x3(bool4x3 v)
  60. {
  61. this.c0 = math.select(new float4(0.0f), new float4(1.0f), v.c0);
  62. this.c1 = math.select(new float4(0.0f), new float4(1.0f), v.c1);
  63. this.c2 = math.select(new float4(0.0f), new float4(1.0f), v.c2);
  64. }
  65. /// <summary>Constructs a float4x3 matrix from a single int value by converting it to float and assigning it to every component.</summary>
  66. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  67. public float4x3(int v)
  68. {
  69. this.c0 = v;
  70. this.c1 = v;
  71. this.c2 = v;
  72. }
  73. /// <summary>Constructs a float4x3 matrix from a int4x3 matrix by componentwise conversion.</summary>
  74. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  75. public float4x3(int4x3 v)
  76. {
  77. this.c0 = v.c0;
  78. this.c1 = v.c1;
  79. this.c2 = v.c2;
  80. }
  81. /// <summary>Constructs a float4x3 matrix from a single uint value by converting it to float and assigning it to every component.</summary>
  82. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  83. public float4x3(uint v)
  84. {
  85. this.c0 = v;
  86. this.c1 = v;
  87. this.c2 = v;
  88. }
  89. /// <summary>Constructs a float4x3 matrix from a uint4x3 matrix by componentwise conversion.</summary>
  90. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  91. public float4x3(uint4x3 v)
  92. {
  93. this.c0 = v.c0;
  94. this.c1 = v.c1;
  95. this.c2 = v.c2;
  96. }
  97. /// <summary>Constructs a float4x3 matrix from a single double value by converting it to float and assigning it to every component.</summary>
  98. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  99. public float4x3(double v)
  100. {
  101. this.c0 = (float4)v;
  102. this.c1 = (float4)v;
  103. this.c2 = (float4)v;
  104. }
  105. /// <summary>Constructs a float4x3 matrix from a double4x3 matrix by componentwise conversion.</summary>
  106. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  107. public float4x3(double4x3 v)
  108. {
  109. this.c0 = (float4)v.c0;
  110. this.c1 = (float4)v.c1;
  111. this.c2 = (float4)v.c2;
  112. }
  113. /// <summary>Implicitly converts a single float value to a float4x3 matrix by assigning it to every component.</summary>
  114. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  115. public static implicit operator float4x3(float v) { return new float4x3(v); }
  116. /// <summary>Explicitly converts a single bool value to a float4x3 matrix by converting it to float and assigning it to every component.</summary>
  117. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  118. public static explicit operator float4x3(bool v) { return new float4x3(v); }
  119. /// <summary>Explicitly converts a bool4x3 matrix to a float4x3 matrix by componentwise conversion.</summary>
  120. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  121. public static explicit operator float4x3(bool4x3 v) { return new float4x3(v); }
  122. /// <summary>Implicitly converts a single int value to a float4x3 matrix by converting it to float and assigning it to every component.</summary>
  123. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  124. public static implicit operator float4x3(int v) { return new float4x3(v); }
  125. /// <summary>Implicitly converts a int4x3 matrix to a float4x3 matrix by componentwise conversion.</summary>
  126. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  127. public static implicit operator float4x3(int4x3 v) { return new float4x3(v); }
  128. /// <summary>Implicitly converts a single uint value to a float4x3 matrix by converting it to float and assigning it to every component.</summary>
  129. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  130. public static implicit operator float4x3(uint v) { return new float4x3(v); }
  131. /// <summary>Implicitly converts a uint4x3 matrix to a float4x3 matrix by componentwise conversion.</summary>
  132. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  133. public static implicit operator float4x3(uint4x3 v) { return new float4x3(v); }
  134. /// <summary>Explicitly converts a single double value to a float4x3 matrix by converting it to float and assigning it to every component.</summary>
  135. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  136. public static explicit operator float4x3(double v) { return new float4x3(v); }
  137. /// <summary>Explicitly converts a double4x3 matrix to a float4x3 matrix by componentwise conversion.</summary>
  138. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  139. public static explicit operator float4x3(double4x3 v) { return new float4x3(v); }
  140. /// <summary>Returns the result of a componentwise multiplication operation on two float4x3 matrices.</summary>
  141. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  142. public static float4x3 operator * (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 * rhs.c0, lhs.c1 * rhs.c1, lhs.c2 * rhs.c2); }
  143. /// <summary>Returns the result of a componentwise multiplication operation on a float4x3 matrix and a float value.</summary>
  144. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  145. public static float4x3 operator * (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 * rhs, lhs.c1 * rhs, lhs.c2 * rhs); }
  146. /// <summary>Returns the result of a componentwise multiplication operation on a float value and a float4x3 matrix.</summary>
  147. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  148. public static float4x3 operator * (float lhs, float4x3 rhs) { return new float4x3 (lhs * rhs.c0, lhs * rhs.c1, lhs * rhs.c2); }
  149. /// <summary>Returns the result of a componentwise addition operation on two float4x3 matrices.</summary>
  150. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  151. public static float4x3 operator + (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 + rhs.c0, lhs.c1 + rhs.c1, lhs.c2 + rhs.c2); }
  152. /// <summary>Returns the result of a componentwise addition operation on a float4x3 matrix and a float value.</summary>
  153. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  154. public static float4x3 operator + (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 + rhs, lhs.c1 + rhs, lhs.c2 + rhs); }
  155. /// <summary>Returns the result of a componentwise addition operation on a float value and a float4x3 matrix.</summary>
  156. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  157. public static float4x3 operator + (float lhs, float4x3 rhs) { return new float4x3 (lhs + rhs.c0, lhs + rhs.c1, lhs + rhs.c2); }
  158. /// <summary>Returns the result of a componentwise subtraction operation on two float4x3 matrices.</summary>
  159. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  160. public static float4x3 operator - (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 - rhs.c0, lhs.c1 - rhs.c1, lhs.c2 - rhs.c2); }
  161. /// <summary>Returns the result of a componentwise subtraction operation on a float4x3 matrix and a float value.</summary>
  162. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  163. public static float4x3 operator - (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 - rhs, lhs.c1 - rhs, lhs.c2 - rhs); }
  164. /// <summary>Returns the result of a componentwise subtraction operation on a float value and a float4x3 matrix.</summary>
  165. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  166. public static float4x3 operator - (float lhs, float4x3 rhs) { return new float4x3 (lhs - rhs.c0, lhs - rhs.c1, lhs - rhs.c2); }
  167. /// <summary>Returns the result of a componentwise division operation on two float4x3 matrices.</summary>
  168. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  169. public static float4x3 operator / (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 / rhs.c0, lhs.c1 / rhs.c1, lhs.c2 / rhs.c2); }
  170. /// <summary>Returns the result of a componentwise division operation on a float4x3 matrix and a float value.</summary>
  171. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  172. public static float4x3 operator / (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 / rhs, lhs.c1 / rhs, lhs.c2 / rhs); }
  173. /// <summary>Returns the result of a componentwise division operation on a float value and a float4x3 matrix.</summary>
  174. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  175. public static float4x3 operator / (float lhs, float4x3 rhs) { return new float4x3 (lhs / rhs.c0, lhs / rhs.c1, lhs / rhs.c2); }
  176. /// <summary>Returns the result of a componentwise modulus operation on two float4x3 matrices.</summary>
  177. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  178. public static float4x3 operator % (float4x3 lhs, float4x3 rhs) { return new float4x3 (lhs.c0 % rhs.c0, lhs.c1 % rhs.c1, lhs.c2 % rhs.c2); }
  179. /// <summary>Returns the result of a componentwise modulus operation on a float4x3 matrix and a float value.</summary>
  180. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  181. public static float4x3 operator % (float4x3 lhs, float rhs) { return new float4x3 (lhs.c0 % rhs, lhs.c1 % rhs, lhs.c2 % rhs); }
  182. /// <summary>Returns the result of a componentwise modulus operation on a float value and a float4x3 matrix.</summary>
  183. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  184. public static float4x3 operator % (float lhs, float4x3 rhs) { return new float4x3 (lhs % rhs.c0, lhs % rhs.c1, lhs % rhs.c2); }
  185. /// <summary>Returns the result of a componentwise increment operation on a float4x3 matrix.</summary>
  186. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  187. public static float4x3 operator ++ (float4x3 val) { return new float4x3 (++val.c0, ++val.c1, ++val.c2); }
  188. /// <summary>Returns the result of a componentwise decrement operation on a float4x3 matrix.</summary>
  189. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  190. public static float4x3 operator -- (float4x3 val) { return new float4x3 (--val.c0, --val.c1, --val.c2); }
  191. /// <summary>Returns the result of a componentwise less than operation on two float4x3 matrices.</summary>
  192. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  193. public static bool4x3 operator < (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 < rhs.c0, lhs.c1 < rhs.c1, lhs.c2 < rhs.c2); }
  194. /// <summary>Returns the result of a componentwise less than operation on a float4x3 matrix and a float value.</summary>
  195. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  196. public static bool4x3 operator < (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 < rhs, lhs.c1 < rhs, lhs.c2 < rhs); }
  197. /// <summary>Returns the result of a componentwise less than operation on a float value and a float4x3 matrix.</summary>
  198. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  199. public static bool4x3 operator < (float lhs, float4x3 rhs) { return new bool4x3 (lhs < rhs.c0, lhs < rhs.c1, lhs < rhs.c2); }
  200. /// <summary>Returns the result of a componentwise less or equal operation on two float4x3 matrices.</summary>
  201. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  202. public static bool4x3 operator <= (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 <= rhs.c0, lhs.c1 <= rhs.c1, lhs.c2 <= rhs.c2); }
  203. /// <summary>Returns the result of a componentwise less or equal operation on a float4x3 matrix and a float value.</summary>
  204. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  205. public static bool4x3 operator <= (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 <= rhs, lhs.c1 <= rhs, lhs.c2 <= rhs); }
  206. /// <summary>Returns the result of a componentwise less or equal operation on a float value and a float4x3 matrix.</summary>
  207. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  208. public static bool4x3 operator <= (float lhs, float4x3 rhs) { return new bool4x3 (lhs <= rhs.c0, lhs <= rhs.c1, lhs <= rhs.c2); }
  209. /// <summary>Returns the result of a componentwise greater than operation on two float4x3 matrices.</summary>
  210. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  211. public static bool4x3 operator > (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 > rhs.c0, lhs.c1 > rhs.c1, lhs.c2 > rhs.c2); }
  212. /// <summary>Returns the result of a componentwise greater than operation on a float4x3 matrix and a float value.</summary>
  213. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  214. public static bool4x3 operator > (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 > rhs, lhs.c1 > rhs, lhs.c2 > rhs); }
  215. /// <summary>Returns the result of a componentwise greater than operation on a float value and a float4x3 matrix.</summary>
  216. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  217. public static bool4x3 operator > (float lhs, float4x3 rhs) { return new bool4x3 (lhs > rhs.c0, lhs > rhs.c1, lhs > rhs.c2); }
  218. /// <summary>Returns the result of a componentwise greater or equal operation on two float4x3 matrices.</summary>
  219. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  220. public static bool4x3 operator >= (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 >= rhs.c0, lhs.c1 >= rhs.c1, lhs.c2 >= rhs.c2); }
  221. /// <summary>Returns the result of a componentwise greater or equal operation on a float4x3 matrix and a float value.</summary>
  222. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  223. public static bool4x3 operator >= (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 >= rhs, lhs.c1 >= rhs, lhs.c2 >= rhs); }
  224. /// <summary>Returns the result of a componentwise greater or equal operation on a float value and a float4x3 matrix.</summary>
  225. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  226. public static bool4x3 operator >= (float lhs, float4x3 rhs) { return new bool4x3 (lhs >= rhs.c0, lhs >= rhs.c1, lhs >= rhs.c2); }
  227. /// <summary>Returns the result of a componentwise unary minus operation on a float4x3 matrix.</summary>
  228. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  229. public static float4x3 operator - (float4x3 val) { return new float4x3 (-val.c0, -val.c1, -val.c2); }
  230. /// <summary>Returns the result of a componentwise unary plus operation on a float4x3 matrix.</summary>
  231. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  232. public static float4x3 operator + (float4x3 val) { return new float4x3 (+val.c0, +val.c1, +val.c2); }
  233. /// <summary>Returns the result of a componentwise equality operation on two float4x3 matrices.</summary>
  234. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  235. public static bool4x3 operator == (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 == rhs.c0, lhs.c1 == rhs.c1, lhs.c2 == rhs.c2); }
  236. /// <summary>Returns the result of a componentwise equality operation on a float4x3 matrix and a float value.</summary>
  237. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  238. public static bool4x3 operator == (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 == rhs, lhs.c1 == rhs, lhs.c2 == rhs); }
  239. /// <summary>Returns the result of a componentwise equality operation on a float value and a float4x3 matrix.</summary>
  240. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  241. public static bool4x3 operator == (float lhs, float4x3 rhs) { return new bool4x3 (lhs == rhs.c0, lhs == rhs.c1, lhs == rhs.c2); }
  242. /// <summary>Returns the result of a componentwise not equal operation on two float4x3 matrices.</summary>
  243. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  244. public static bool4x3 operator != (float4x3 lhs, float4x3 rhs) { return new bool4x3 (lhs.c0 != rhs.c0, lhs.c1 != rhs.c1, lhs.c2 != rhs.c2); }
  245. /// <summary>Returns the result of a componentwise not equal operation on a float4x3 matrix and a float value.</summary>
  246. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  247. public static bool4x3 operator != (float4x3 lhs, float rhs) { return new bool4x3 (lhs.c0 != rhs, lhs.c1 != rhs, lhs.c2 != rhs); }
  248. /// <summary>Returns the result of a componentwise not equal operation on a float value and a float4x3 matrix.</summary>
  249. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  250. public static bool4x3 operator != (float lhs, float4x3 rhs) { return new bool4x3 (lhs != rhs.c0, lhs != rhs.c1, lhs != rhs.c2); }
  251. /// <summary>Returns the float4 element at a specified index.</summary>
  252. unsafe public ref float4 this[int index]
  253. {
  254. get
  255. {
  256. #if ENABLE_UNITY_COLLECTIONS_CHECKS
  257. if ((uint)index >= 3)
  258. throw new System.ArgumentException("index must be between[0...2]");
  259. #endif
  260. fixed (float4x3* array = &this) { return ref ((float4*)array)[index]; }
  261. }
  262. }
  263. /// <summary>Returns true if the float4x3 is equal to a given float4x3, false otherwise.</summary>
  264. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  265. public bool Equals(float4x3 rhs) { return c0.Equals(rhs.c0) && c1.Equals(rhs.c1) && c2.Equals(rhs.c2); }
  266. /// <summary>Returns true if the float4x3 is equal to a given float4x3, false otherwise.</summary>
  267. public override bool Equals(object o) { return Equals((float4x3)o); }
  268. /// <summary>Returns a hash code for the float4x3.</summary>
  269. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  270. public override int GetHashCode() { return (int)math.hash(this); }
  271. /// <summary>Returns a string representation of the float4x3.</summary>
  272. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  273. public override string ToString()
  274. {
  275. return string.Format("float4x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f)", c0.x, c1.x, c2.x, c0.y, c1.y, c2.y, c0.z, c1.z, c2.z, c0.w, c1.w, c2.w);
  276. }
  277. /// <summary>Returns a string representation of the float4x3 using a specified format and culture-specific format information.</summary>
  278. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  279. public string ToString(string format, IFormatProvider formatProvider)
  280. {
  281. return string.Format("float4x3({0}f, {1}f, {2}f, {3}f, {4}f, {5}f, {6}f, {7}f, {8}f, {9}f, {10}f, {11}f)", c0.x.ToString(format, formatProvider), c1.x.ToString(format, formatProvider), c2.x.ToString(format, formatProvider), c0.y.ToString(format, formatProvider), c1.y.ToString(format, formatProvider), c2.y.ToString(format, formatProvider), c0.z.ToString(format, formatProvider), c1.z.ToString(format, formatProvider), c2.z.ToString(format, formatProvider), c0.w.ToString(format, formatProvider), c1.w.ToString(format, formatProvider), c2.w.ToString(format, formatProvider));
  282. }
  283. }
  284. public static partial class math
  285. {
  286. /// <summary>Returns a float4x3 matrix constructed from three float4 vectors.</summary>
  287. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  288. public static float4x3 float4x3(float4 c0, float4 c1, float4 c2) { return new float4x3(c0, c1, c2); }
  289. /// <summary>Returns a float4x3 matrix constructed from from 12 float values given in row-major order.</summary>
  290. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  291. public static float4x3 float4x3(float m00, float m01, float m02,
  292. float m10, float m11, float m12,
  293. float m20, float m21, float m22,
  294. float m30, float m31, float m32)
  295. {
  296. return new float4x3(m00, m01, m02,
  297. m10, m11, m12,
  298. m20, m21, m22,
  299. m30, m31, m32);
  300. }
  301. /// <summary>Returns a float4x3 matrix constructed from a single float value by assigning it to every component.</summary>
  302. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  303. public static float4x3 float4x3(float v) { return new float4x3(v); }
  304. /// <summary>Returns a float4x3 matrix constructed from a single bool value by converting it to float and assigning it to every component.</summary>
  305. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  306. public static float4x3 float4x3(bool v) { return new float4x3(v); }
  307. /// <summary>Return a float4x3 matrix constructed from a bool4x3 matrix by componentwise conversion.</summary>
  308. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  309. public static float4x3 float4x3(bool4x3 v) { return new float4x3(v); }
  310. /// <summary>Returns a float4x3 matrix constructed from a single int value by converting it to float and assigning it to every component.</summary>
  311. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  312. public static float4x3 float4x3(int v) { return new float4x3(v); }
  313. /// <summary>Return a float4x3 matrix constructed from a int4x3 matrix by componentwise conversion.</summary>
  314. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  315. public static float4x3 float4x3(int4x3 v) { return new float4x3(v); }
  316. /// <summary>Returns a float4x3 matrix constructed from a single uint value by converting it to float and assigning it to every component.</summary>
  317. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  318. public static float4x3 float4x3(uint v) { return new float4x3(v); }
  319. /// <summary>Return a float4x3 matrix constructed from a uint4x3 matrix by componentwise conversion.</summary>
  320. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  321. public static float4x3 float4x3(uint4x3 v) { return new float4x3(v); }
  322. /// <summary>Returns a float4x3 matrix constructed from a single double value by converting it to float and assigning it to every component.</summary>
  323. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  324. public static float4x3 float4x3(double v) { return new float4x3(v); }
  325. /// <summary>Return a float4x3 matrix constructed from a double4x3 matrix by componentwise conversion.</summary>
  326. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  327. public static float4x3 float4x3(double4x3 v) { return new float4x3(v); }
  328. /// <summary>Return the float3x4 transpose of a float4x3 matrix.</summary>
  329. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  330. public static float3x4 transpose(float4x3 v)
  331. {
  332. return float3x4(
  333. v.c0.x, v.c0.y, v.c0.z, v.c0.w,
  334. v.c1.x, v.c1.y, v.c1.z, v.c1.w,
  335. v.c2.x, v.c2.y, v.c2.z, v.c2.w);
  336. }
  337. /// <summary>Returns a uint hash code of a float4x3 vector.</summary>
  338. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  339. public static uint hash(float4x3 v)
  340. {
  341. return csum(asuint(v.c0) * uint4(0xC53F4755u, 0x6985C229u, 0xE133B0B3u, 0xC3E0A3B9u) +
  342. asuint(v.c1) * uint4(0xFE31134Fu, 0x712A34D7u, 0x9D77A59Bu, 0x4942CA39u) +
  343. asuint(v.c2) * uint4(0xB40EC62Du, 0x565ED63Fu, 0x93C30C2Bu, 0xDCAF0351u)) + 0x6E050B01u;
  344. }
  345. /// <summary>
  346. /// Returns a uint4 vector hash code of a float4x3 vector.
  347. /// When multiple elements are to be hashes together, it can more efficient to calculate and combine wide hash
  348. /// that are only reduced to a narrow uint hash at the very end instead of at every step.
  349. /// </summary>
  350. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  351. public static uint4 hashwide(float4x3 v)
  352. {
  353. return (asuint(v.c0) * uint4(0x750FDBF5u, 0x7F3DD499u, 0x52EAAEBBu, 0x4599C793u) +
  354. asuint(v.c1) * uint4(0x83B5E729u, 0xC267163Fu, 0x67BC9149u, 0xAD7C5EC1u) +
  355. asuint(v.c2) * uint4(0x822A7D6Du, 0xB492BF15u, 0xD37220E3u, 0x7AA2C2BDu)) + 0xE16BC89Du;
  356. }
  357. }
  358. }