BsVector3I.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #pragma once
  4. #include "Prerequisites/BsPrerequisitesUtil.h"
  5. namespace bs
  6. {
  7. /** @addtogroup Math
  8. * @{
  9. */
  10. /** A three dimensional vector with integer coordinates. */
  11. struct BS_SCRIPT_EXPORT(m:Math,pl:true) Vector3I
  12. {
  13. INT32 x = 0;
  14. INT32 y = 0;
  15. INT32 z = 0;
  16. Vector3I()
  17. { }
  18. Vector3I(INT32 x, INT32 y, INT32 z)
  19. :x(x), y(y), z(z)
  20. { }
  21. INT32 operator[] (size_t i) const
  22. {
  23. assert(i < 3);
  24. switch (i)
  25. {
  26. case 0: return x;
  27. case 1: return y;
  28. case 2: return z;
  29. default: return 0;
  30. }
  31. }
  32. INT32& operator[] (size_t i)
  33. {
  34. assert(i < 3);
  35. switch (i)
  36. {
  37. case 0: return x;
  38. case 1: return y;
  39. case 2: return z;
  40. default: return x;
  41. }
  42. }
  43. Vector3I& operator= (const Vector3I& rhs)
  44. {
  45. x = rhs.x;
  46. y = rhs.y;
  47. z = rhs.z;
  48. return *this;
  49. }
  50. bool operator== (const Vector3I& rhs) const
  51. {
  52. return x == rhs.x && y == rhs.y && z == rhs.z;
  53. }
  54. bool operator!= (const Vector3I& rhs) const
  55. {
  56. return !operator==(rhs);
  57. }
  58. };
  59. /** @} */
  60. BS_ALLOW_MEMCPY_SERIALIZATION(Vector3I)
  61. }