Vector6.cs 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. using System.Runtime.CompilerServices;
  2. namespace Ryujinx.Audio.Renderer.Utils.Math
  3. {
  4. record struct Vector6
  5. {
  6. public float X;
  7. public float Y;
  8. public float Z;
  9. public float W;
  10. public float V;
  11. public float U;
  12. public Vector6(float value) : this(value, value, value, value, value, value)
  13. {
  14. }
  15. public Vector6(float x, float y, float z, float w, float v, float u)
  16. {
  17. X = x;
  18. Y = y;
  19. Z = z;
  20. W = w;
  21. V = v;
  22. U = u;
  23. }
  24. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  25. public static Vector6 operator +(Vector6 left, Vector6 right)
  26. {
  27. return new Vector6(left.X + right.X,
  28. left.Y + right.Y,
  29. left.Z + right.Z,
  30. left.W + right.W,
  31. left.V + right.V,
  32. left.U + right.U);
  33. }
  34. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  35. public static Vector6 operator *(Vector6 left, Vector6 right)
  36. {
  37. return new Vector6(left.X * right.X,
  38. left.Y * right.Y,
  39. left.Z * right.Z,
  40. left.W * right.W,
  41. left.V * right.V,
  42. left.U * right.U);
  43. }
  44. [MethodImpl(MethodImplOptions.AggressiveInlining)]
  45. public static Vector6 operator *(Vector6 left, float right)
  46. {
  47. return left * new Vector6(right);
  48. }
  49. }
  50. }