Vector4.cs 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603
  1. using System;
  2. using System.Globalization;
  3. namespace PF
  4. {
  5. [Serializable]
  6. public struct Vector4: IEquatable<Vector4>
  7. {
  8. private static readonly float epsilon = 1E-05f;
  9. private static Vector4 _zero = new Vector4();
  10. private static Vector4 _one = new Vector4(1f, 1f, 1f, 1f);
  11. public float x;
  12. public float y;
  13. public float z;
  14. public float w;
  15. public static Vector4 zero
  16. {
  17. get
  18. {
  19. return Vector4._zero;
  20. }
  21. }
  22. public static Vector4 one
  23. {
  24. get
  25. {
  26. return Vector4._one;
  27. }
  28. }
  29. public Vector4(float x, float y, float z, float w)
  30. {
  31. this.x = x;
  32. this.y = y;
  33. this.z = z;
  34. this.w = w;
  35. }
  36. public Vector4(Vector2 value, float z, float w)
  37. {
  38. this.x = value.x;
  39. this.y = value.y;
  40. this.z = z;
  41. this.w = w;
  42. }
  43. public Vector4(Vector3 value, float w)
  44. {
  45. this.x = value.x;
  46. this.y = value.y;
  47. this.z = value.z;
  48. this.w = w;
  49. }
  50. public Vector4(float value)
  51. {
  52. this.x = this.y = this.z = this.w = value;
  53. }
  54. #if !SERVER
  55. public static implicit operator Vector4(UnityEngine.Vector4 v4)
  56. {
  57. return new Vector4(v4.x, v4.y, v4.z, v4.w);
  58. }
  59. public static implicit operator UnityEngine.Vector4(Vector4 v4)
  60. {
  61. return new UnityEngine.Vector4(v4.x, v4.y, v4.z, v4.w);
  62. }
  63. #endif
  64. public override string ToString()
  65. {
  66. CultureInfo currentCulture = CultureInfo.CurrentCulture;
  67. return string.Format((IFormatProvider) currentCulture, "{0}, {1}, {2}, {3}", (object) this.x.ToString((IFormatProvider) currentCulture),
  68. (object) this.y.ToString((IFormatProvider) currentCulture),
  69. (object) this.z.ToString((IFormatProvider) currentCulture),
  70. (object) this.w.ToString((IFormatProvider) currentCulture));
  71. }
  72. public bool Equals(Vector4 other)
  73. {
  74. if ((double) this.x == (double) other.x && (double) this.y == (double) other.y && (double) this.z == (double) other.z)
  75. return (double) this.w == (double) other.w;
  76. return false;
  77. }
  78. public override bool Equals(object obj)
  79. {
  80. bool flag = false;
  81. if (obj is Vector4)
  82. flag = this.Equals((Vector4) obj);
  83. return flag;
  84. }
  85. public override int GetHashCode()
  86. {
  87. return this.x.GetHashCode() + this.y.GetHashCode() + this.z.GetHashCode() + this.w.GetHashCode();
  88. }
  89. public float Length()
  90. {
  91. return (float) Math.Sqrt((double) this.x * (double) this.x + (double) this.y * (double) this.y + (double) this.z * (double) this.z +
  92. (double) this.w * (double) this.w);
  93. }
  94. public float LengthSquared()
  95. {
  96. return (float) ((double) this.x * (double) this.x + (double) this.y * (double) this.y + (double) this.z * (double) this.z +
  97. (double) this.w * (double) this.w);
  98. }
  99. public static float Distance(Vector4 value1, Vector4 value2)
  100. {
  101. float num1 = value1.x - value2.x;
  102. float num2 = value1.y - value2.y;
  103. float num3 = value1.z - value2.z;
  104. float num4 = value1.w - value2.w;
  105. return (float) Math.Sqrt((double) num1 * (double) num1 + (double) num2 * (double) num2 + (double) num3 * (double) num3 +
  106. (double) num4 * (double) num4);
  107. }
  108. public static void Distance(ref Vector4 value1, ref Vector4 value2, out float result)
  109. {
  110. float num1 = value1.x - value2.x;
  111. float num2 = value1.y - value2.y;
  112. float num3 = value1.z - value2.z;
  113. float num4 = value1.w - value2.w;
  114. float num5 = (float) ((double) num1 * (double) num1 + (double) num2 * (double) num2 + (double) num3 * (double) num3 +
  115. (double) num4 * (double) num4);
  116. result = (float) Math.Sqrt((double) num5);
  117. }
  118. public static float DistanceSquared(Vector4 value1, Vector4 value2)
  119. {
  120. float num1 = value1.x - value2.x;
  121. float num2 = value1.y - value2.y;
  122. float num3 = value1.z - value2.z;
  123. float num4 = value1.w - value2.w;
  124. return (float) ((double) num1 * (double) num1 + (double) num2 * (double) num2 + (double) num3 * (double) num3 +
  125. (double) num4 * (double) num4);
  126. }
  127. public static void DistanceSquared(ref Vector4 value1, ref Vector4 value2, out float result)
  128. {
  129. float num1 = value1.x - value2.x;
  130. float num2 = value1.y - value2.y;
  131. float num3 = value1.z - value2.z;
  132. float num4 = value1.w - value2.w;
  133. result = (float) ((double) num1 * (double) num1 + (double) num2 * (double) num2 + (double) num3 * (double) num3 +
  134. (double) num4 * (double) num4);
  135. }
  136. public static float Dot(Vector4 vector1, Vector4 vector2)
  137. {
  138. return (float) ((double) vector1.x * (double) vector2.x + (double) vector1.y * (double) vector2.y +
  139. (double) vector1.z * (double) vector2.z + (double) vector1.w * (double) vector2.w);
  140. }
  141. public static void Dot(ref Vector4 vector1, ref Vector4 vector2, out float result)
  142. {
  143. result = (float) ((double) vector1.x * (double) vector2.x + (double) vector1.y * (double) vector2.y +
  144. (double) vector1.z * (double) vector2.z + (double) vector1.w * (double) vector2.w);
  145. }
  146. public void Normalize()
  147. {
  148. float num1 = (float) ((double) this.x * (double) this.x + (double) this.y * (double) this.y + (double) this.z * (double) this.z +
  149. (double) this.w * (double) this.w);
  150. if ((double) num1 < (double) Vector4.epsilon)
  151. return;
  152. float num2 = 1f / (float) Math.Sqrt((double) num1);
  153. this.x *= num2;
  154. this.y *= num2;
  155. this.z *= num2;
  156. this.w *= num2;
  157. }
  158. public static Vector4 Normalize(Vector4 vector)
  159. {
  160. float num1 = (float) ((double) vector.x * (double) vector.x + (double) vector.y * (double) vector.y +
  161. (double) vector.z * (double) vector.z + (double) vector.w * (double) vector.w);
  162. if ((double) num1 < (double) Vector4.epsilon)
  163. return vector;
  164. float num2 = 1f / (float) Math.Sqrt((double) num1);
  165. Vector4 vector4;
  166. vector4.x = vector.x * num2;
  167. vector4.y = vector.y * num2;
  168. vector4.z = vector.z * num2;
  169. vector4.w = vector.w * num2;
  170. return vector4;
  171. }
  172. public static void Normalize(ref Vector4 vector, out Vector4 result)
  173. {
  174. float num1 = (float) ((double) vector.x * (double) vector.x + (double) vector.y * (double) vector.y +
  175. (double) vector.z * (double) vector.z + (double) vector.w * (double) vector.w);
  176. if ((double) num1 < (double) Vector4.epsilon)
  177. {
  178. result = vector;
  179. }
  180. else
  181. {
  182. float num2 = 1f / (float) Math.Sqrt((double) num1);
  183. result.x = vector.x * num2;
  184. result.y = vector.y * num2;
  185. result.z = vector.z * num2;
  186. result.w = vector.w * num2;
  187. }
  188. }
  189. public static Vector4 Min(Vector4 value1, Vector4 value2)
  190. {
  191. Vector4 vector4;
  192. vector4.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
  193. vector4.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
  194. vector4.z = (double) value1.z < (double) value2.z? value1.z : value2.z;
  195. vector4.w = (double) value1.w < (double) value2.w? value1.w : value2.w;
  196. return vector4;
  197. }
  198. public static void Min(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
  199. {
  200. result.x = (double) value1.x < (double) value2.x? value1.x : value2.x;
  201. result.y = (double) value1.y < (double) value2.y? value1.y : value2.y;
  202. result.z = (double) value1.z < (double) value2.z? value1.z : value2.z;
  203. result.w = (double) value1.w < (double) value2.w? value1.w : value2.w;
  204. }
  205. public static Vector4 Max(Vector4 value1, Vector4 value2)
  206. {
  207. Vector4 vector4;
  208. vector4.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
  209. vector4.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
  210. vector4.z = (double) value1.z > (double) value2.z? value1.z : value2.z;
  211. vector4.w = (double) value1.w > (double) value2.w? value1.w : value2.w;
  212. return vector4;
  213. }
  214. public static void Max(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
  215. {
  216. result.x = (double) value1.x > (double) value2.x? value1.x : value2.x;
  217. result.y = (double) value1.y > (double) value2.y? value1.y : value2.y;
  218. result.z = (double) value1.z > (double) value2.z? value1.z : value2.z;
  219. result.w = (double) value1.w > (double) value2.w? value1.w : value2.w;
  220. }
  221. public static Vector4 Clamp(Vector4 value1, Vector4 min, Vector4 max)
  222. {
  223. float x = value1.x;
  224. float num1 = (double) x > (double) max.x? max.x : x;
  225. float num2 = (double) num1 < (double) min.x? min.x : num1;
  226. float y = value1.y;
  227. float num3 = (double) y > (double) max.y? max.y : y;
  228. float num4 = (double) num3 < (double) min.y? min.y : num3;
  229. float z = value1.z;
  230. float num5 = (double) z > (double) max.z? max.z : z;
  231. float num6 = (double) num5 < (double) min.z? min.z : num5;
  232. float w = value1.w;
  233. float num7 = (double) w > (double) max.w? max.w : w;
  234. float num8 = (double) num7 < (double) min.w? min.w : num7;
  235. Vector4 vector4;
  236. vector4.x = num2;
  237. vector4.y = num4;
  238. vector4.z = num6;
  239. vector4.w = num8;
  240. return vector4;
  241. }
  242. public static void Clamp(ref Vector4 value1, ref Vector4 min, ref Vector4 max, out Vector4 result)
  243. {
  244. float x = value1.x;
  245. float num1 = (double) x > (double) max.x? max.x : x;
  246. float num2 = (double) num1 < (double) min.x? min.x : num1;
  247. float y = value1.y;
  248. float num3 = (double) y > (double) max.y? max.y : y;
  249. float num4 = (double) num3 < (double) min.y? min.y : num3;
  250. float z = value1.z;
  251. float num5 = (double) z > (double) max.z? max.z : z;
  252. float num6 = (double) num5 < (double) min.z? min.z : num5;
  253. float w = value1.w;
  254. float num7 = (double) w > (double) max.w? max.w : w;
  255. float num8 = (double) num7 < (double) min.w? min.w : num7;
  256. result.x = num2;
  257. result.y = num4;
  258. result.z = num6;
  259. result.w = num8;
  260. }
  261. public static Vector4 Lerp(Vector4 value1, Vector4 value2, float amount)
  262. {
  263. Vector4 vector4;
  264. vector4.x = value1.x + (value2.x - value1.x) * amount;
  265. vector4.y = value1.y + (value2.y - value1.y) * amount;
  266. vector4.z = value1.z + (value2.z - value1.z) * amount;
  267. vector4.w = value1.w + (value2.w - value1.w) * amount;
  268. return vector4;
  269. }
  270. public static void Lerp(ref Vector4 value1, ref Vector4 value2, float amount, out Vector4 result)
  271. {
  272. result.x = value1.x + (value2.x - value1.x) * amount;
  273. result.y = value1.y + (value2.y - value1.y) * amount;
  274. result.z = value1.z + (value2.z - value1.z) * amount;
  275. result.w = value1.w + (value2.w - value1.w) * amount;
  276. }
  277. public static Vector4 SmoothStep(Vector4 value1, Vector4 value2, float amount)
  278. {
  279. amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
  280. amount = (float) ((double) amount * (double) amount * (3.0 - 2.0 * (double) amount));
  281. Vector4 vector4;
  282. vector4.x = value1.x + (value2.x - value1.x) * amount;
  283. vector4.y = value1.y + (value2.y - value1.y) * amount;
  284. vector4.z = value1.z + (value2.z - value1.z) * amount;
  285. vector4.w = value1.w + (value2.w - value1.w) * amount;
  286. return vector4;
  287. }
  288. public static void SmoothStep(ref Vector4 value1, ref Vector4 value2, float amount, out Vector4 result)
  289. {
  290. amount = (double) amount > 1.0? 1f : ((double) amount < 0.0? 0.0f : amount);
  291. amount = (float) ((double) amount * (double) amount * (3.0 - 2.0 * (double) amount));
  292. result.x = value1.x + (value2.x - value1.x) * amount;
  293. result.y = value1.y + (value2.y - value1.y) * amount;
  294. result.z = value1.z + (value2.z - value1.z) * amount;
  295. result.w = value1.w + (value2.w - value1.w) * amount;
  296. }
  297. public static Vector4 Hermite(Vector4 value1, Vector4 tangent1, Vector4 value2, Vector4 tangent2, float amount)
  298. {
  299. float num1 = amount * amount;
  300. float num2 = amount * num1;
  301. float num3 = (float) (2.0 * (double) num2 - 3.0 * (double) num1 + 1.0);
  302. float num4 = (float) (-2.0 * (double) num2 + 3.0 * (double) num1);
  303. float num5 = num2 - 2f * num1 + amount;
  304. float num6 = num2 - num1;
  305. Vector4 vector4;
  306. vector4.x = (float) ((double) value1.x * (double) num3 + (double) value2.x * (double) num4 + (double) tangent1.x * (double) num5 +
  307. (double) tangent2.x * (double) num6);
  308. vector4.y = (float) ((double) value1.y * (double) num3 + (double) value2.y * (double) num4 + (double) tangent1.y * (double) num5 +
  309. (double) tangent2.y * (double) num6);
  310. vector4.z = (float) ((double) value1.z * (double) num3 + (double) value2.z * (double) num4 + (double) tangent1.z * (double) num5 +
  311. (double) tangent2.z * (double) num6);
  312. vector4.w = (float) ((double) value1.w * (double) num3 + (double) value2.w * (double) num4 + (double) tangent1.w * (double) num5 +
  313. (double) tangent2.w * (double) num6);
  314. return vector4;
  315. }
  316. public static void Hermite(
  317. ref Vector4 value1, ref Vector4 tangent1, ref Vector4 value2, ref Vector4 tangent2, float amount, out Vector4 result)
  318. {
  319. float num1 = amount * amount;
  320. float num2 = amount * num1;
  321. float num3 = (float) (2.0 * (double) num2 - 3.0 * (double) num1 + 1.0);
  322. float num4 = (float) (-2.0 * (double) num2 + 3.0 * (double) num1);
  323. float num5 = num2 - 2f * num1 + amount;
  324. float num6 = num2 - num1;
  325. result.x = (float) ((double) value1.x * (double) num3 + (double) value2.x * (double) num4 + (double) tangent1.x * (double) num5 +
  326. (double) tangent2.x * (double) num6);
  327. result.y = (float) ((double) value1.y * (double) num3 + (double) value2.y * (double) num4 + (double) tangent1.y * (double) num5 +
  328. (double) tangent2.y * (double) num6);
  329. result.z = (float) ((double) value1.z * (double) num3 + (double) value2.z * (double) num4 + (double) tangent1.z * (double) num5 +
  330. (double) tangent2.z * (double) num6);
  331. result.w = (float) ((double) value1.w * (double) num3 + (double) value2.w * (double) num4 + (double) tangent1.w * (double) num5 +
  332. (double) tangent2.w * (double) num6);
  333. }
  334. public static Vector4 Project(Vector4 vector, Vector4 onNormal)
  335. {
  336. return onNormal * Vector4.Dot(vector, onNormal) / Vector4.Dot(onNormal, onNormal);
  337. }
  338. public static void Project(ref Vector4 vector, ref Vector4 onNormal, out Vector4 result)
  339. {
  340. result = onNormal * Vector4.Dot(vector, onNormal) / Vector4.Dot(onNormal, onNormal);
  341. }
  342. public static Vector4 Negate(Vector4 value)
  343. {
  344. Vector4 vector4;
  345. vector4.x = -value.x;
  346. vector4.y = -value.y;
  347. vector4.z = -value.z;
  348. vector4.w = -value.w;
  349. return vector4;
  350. }
  351. public static void Negate(ref Vector4 value, out Vector4 result)
  352. {
  353. result.x = -value.x;
  354. result.y = -value.y;
  355. result.z = -value.z;
  356. result.w = -value.w;
  357. }
  358. public static Vector4 Add(Vector4 value1, Vector4 value2)
  359. {
  360. Vector4 vector4;
  361. vector4.x = value1.x + value2.x;
  362. vector4.y = value1.y + value2.y;
  363. vector4.z = value1.z + value2.z;
  364. vector4.w = value1.w + value2.w;
  365. return vector4;
  366. }
  367. public static void Add(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
  368. {
  369. result.x = value1.x + value2.x;
  370. result.y = value1.y + value2.y;
  371. result.z = value1.z + value2.z;
  372. result.w = value1.w + value2.w;
  373. }
  374. public static Vector4 Sub(Vector4 value1, Vector4 value2)
  375. {
  376. Vector4 vector4;
  377. vector4.x = value1.x - value2.x;
  378. vector4.y = value1.y - value2.y;
  379. vector4.z = value1.z - value2.z;
  380. vector4.w = value1.w - value2.w;
  381. return vector4;
  382. }
  383. public static void Sub(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
  384. {
  385. result.x = value1.x - value2.x;
  386. result.y = value1.y - value2.y;
  387. result.z = value1.z - value2.z;
  388. result.w = value1.w - value2.w;
  389. }
  390. public static Vector4 Multiply(Vector4 value1, Vector4 value2)
  391. {
  392. Vector4 vector4;
  393. vector4.x = value1.x * value2.x;
  394. vector4.y = value1.y * value2.y;
  395. vector4.z = value1.z * value2.z;
  396. vector4.w = value1.w * value2.w;
  397. return vector4;
  398. }
  399. public static void Multiply(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
  400. {
  401. result.x = value1.x * value2.x;
  402. result.y = value1.y * value2.y;
  403. result.z = value1.z * value2.z;
  404. result.w = value1.w * value2.w;
  405. }
  406. public static Vector4 Multiply(Vector4 value1, float scaleFactor)
  407. {
  408. Vector4 vector4;
  409. vector4.x = value1.x * scaleFactor;
  410. vector4.y = value1.y * scaleFactor;
  411. vector4.z = value1.z * scaleFactor;
  412. vector4.w = value1.w * scaleFactor;
  413. return vector4;
  414. }
  415. public static void Multiply(ref Vector4 value1, float scaleFactor, out Vector4 result)
  416. {
  417. result.x = value1.x * scaleFactor;
  418. result.y = value1.y * scaleFactor;
  419. result.z = value1.z * scaleFactor;
  420. result.w = value1.w * scaleFactor;
  421. }
  422. public static Vector4 Divide(Vector4 value1, Vector4 value2)
  423. {
  424. Vector4 vector4;
  425. vector4.x = value1.x / value2.x;
  426. vector4.y = value1.y / value2.y;
  427. vector4.z = value1.z / value2.z;
  428. vector4.w = value1.w / value2.w;
  429. return vector4;
  430. }
  431. public static void Divide(ref Vector4 value1, ref Vector4 value2, out Vector4 result)
  432. {
  433. result.x = value1.x / value2.x;
  434. result.y = value1.y / value2.y;
  435. result.z = value1.z / value2.z;
  436. result.w = value1.w / value2.w;
  437. }
  438. public static Vector4 Divide(Vector4 value1, float divider)
  439. {
  440. float num = 1f / divider;
  441. Vector4 vector4;
  442. vector4.x = value1.x * num;
  443. vector4.y = value1.y * num;
  444. vector4.z = value1.z * num;
  445. vector4.w = value1.w * num;
  446. return vector4;
  447. }
  448. public static void Divide(ref Vector4 value1, float divider, out Vector4 result)
  449. {
  450. float num = 1f / divider;
  451. result.x = value1.x * num;
  452. result.y = value1.y * num;
  453. result.z = value1.z * num;
  454. result.w = value1.w * num;
  455. }
  456. public static Vector4 operator -(Vector4 value)
  457. {
  458. Vector4 vector4;
  459. vector4.x = -value.x;
  460. vector4.y = -value.y;
  461. vector4.z = -value.z;
  462. vector4.w = -value.w;
  463. return vector4;
  464. }
  465. public static bool operator ==(Vector4 value1, Vector4 value2)
  466. {
  467. if ((double) value1.x == (double) value2.x && (double) value1.y == (double) value2.y && (double) value1.z == (double) value2.z)
  468. return (double) value1.w == (double) value2.w;
  469. return false;
  470. }
  471. public static bool operator !=(Vector4 value1, Vector4 value2)
  472. {
  473. if ((double) value1.x == (double) value2.x && (double) value1.y == (double) value2.y && (double) value1.z == (double) value2.z)
  474. return (double) value1.w != (double) value2.w;
  475. return true;
  476. }
  477. public static Vector4 operator +(Vector4 value1, Vector4 value2)
  478. {
  479. Vector4 vector4;
  480. vector4.x = value1.x + value2.x;
  481. vector4.y = value1.y + value2.y;
  482. vector4.z = value1.z + value2.z;
  483. vector4.w = value1.w + value2.w;
  484. return vector4;
  485. }
  486. public static Vector4 operator -(Vector4 value1, Vector4 value2)
  487. {
  488. Vector4 vector4;
  489. vector4.x = value1.x - value2.x;
  490. vector4.y = value1.y - value2.y;
  491. vector4.z = value1.z - value2.z;
  492. vector4.w = value1.w - value2.w;
  493. return vector4;
  494. }
  495. public static Vector4 operator *(Vector4 value1, Vector4 value2)
  496. {
  497. Vector4 vector4;
  498. vector4.x = value1.x * value2.x;
  499. vector4.y = value1.y * value2.y;
  500. vector4.z = value1.z * value2.z;
  501. vector4.w = value1.w * value2.w;
  502. return vector4;
  503. }
  504. public static Vector4 operator *(Vector4 value1, float scaleFactor)
  505. {
  506. Vector4 vector4;
  507. vector4.x = value1.x * scaleFactor;
  508. vector4.y = value1.y * scaleFactor;
  509. vector4.z = value1.z * scaleFactor;
  510. vector4.w = value1.w * scaleFactor;
  511. return vector4;
  512. }
  513. public static Vector4 operator *(float scaleFactor, Vector4 value1)
  514. {
  515. Vector4 vector4;
  516. vector4.x = value1.x * scaleFactor;
  517. vector4.y = value1.y * scaleFactor;
  518. vector4.z = value1.z * scaleFactor;
  519. vector4.w = value1.w * scaleFactor;
  520. return vector4;
  521. }
  522. public static Vector4 operator /(Vector4 value1, Vector4 value2)
  523. {
  524. Vector4 vector4;
  525. vector4.x = value1.x / value2.x;
  526. vector4.y = value1.y / value2.y;
  527. vector4.z = value1.z / value2.z;
  528. vector4.w = value1.w / value2.w;
  529. return vector4;
  530. }
  531. public static Vector4 operator /(Vector4 value1, float divider)
  532. {
  533. float num = 1f / divider;
  534. Vector4 vector4;
  535. vector4.x = value1.x * num;
  536. vector4.y = value1.y * num;
  537. vector4.z = value1.z * num;
  538. vector4.w = value1.w * num;
  539. return vector4;
  540. }
  541. }
  542. }