Vec3Binds.cpp 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. #include "Device.h"
  2. #include "ScriptSystem.h"
  3. namespace crown
  4. {
  5. /// Lightweight bind for Vec3
  6. extern "C"
  7. {
  8. /// Constructor
  9. Vec3& vec3(float nx, float ny, float nz);
  10. Vec3& vec3_add(Vec3& self, const Vec3& v);
  11. Vec3& vec3_subtract(Vec3& self, const Vec3& v);
  12. Vec3& vec3_multiply(Vec3& self, const float s);
  13. Vec3& vec3_divide(Vec3& self, const float s);
  14. float vec3_dot(Vec3& self, const Vec3& v);
  15. Vec3& vec3_cross(Vec3& self, const Vec3& v);
  16. bool vec3_equal(Vec3& self, const Vec3& other);
  17. bool vec3_lower(Vec3& self, const Vec3& other);
  18. bool vec3_greater(Vec3& self, const Vec3& other);
  19. float vec3_length(Vec3& self);
  20. float vec3_squared_length(Vec3& self);
  21. void vec3_set_length(Vec3& self, float len);
  22. Vec3& vec3_normalize(Vec3& self);
  23. Vec3& vec3_negate(Vec3& self);
  24. float vec3_get_distance_to(Vec3& self, const Vec3& a);
  25. float vec3_get_angle_between(Vec3& self, const Vec3& a);
  26. void vec3_zero(Vec3& self);
  27. } // extern "C"
  28. //------------------------------------------------------------
  29. Vec3& vec3(float nx, float ny, float nz)
  30. {
  31. return device()->script_system()->next_vec3(nx, ny, nz);
  32. }
  33. //------------------------------------------------------------
  34. Vec3& vec3_add(Vec3& self, const Vec3& v)
  35. {
  36. self += v;
  37. return self;
  38. }
  39. //------------------------------------------------------------
  40. Vec3& vec3_subtract(Vec3& self, const Vec3& v)
  41. {
  42. self -= v;
  43. return self;
  44. }
  45. //------------------------------------------------------------
  46. Vec3& vec3_multiply(Vec3& self, const float s)
  47. {
  48. self *= s;
  49. return self;
  50. }
  51. //------------------------------------------------------------
  52. Vec3& vec3_divide(Vec3& self, const float s)
  53. {
  54. self /= s;
  55. return self;
  56. }
  57. //------------------------------------------------------------
  58. float vec3_dot(Vec3& self, const Vec3& v)
  59. {
  60. return self.dot(v);
  61. }
  62. //------------------------------------------------------------
  63. Vec3& vec3_cross(Vec3& self, const Vec3& v)
  64. {
  65. self.cross(v);
  66. return self;
  67. }
  68. //------------------------------------------------------------
  69. bool vec3_equal(Vec3& self, const Vec3& other)
  70. {
  71. return self == other;
  72. }
  73. //------------------------------------------------------------
  74. bool vec3_lower(Vec3& self, const Vec3& other)
  75. {
  76. return self < other;
  77. }
  78. //------------------------------------------------------------
  79. bool vec3_greater(Vec3& self, const Vec3& other)
  80. {
  81. return self > other;
  82. }
  83. //------------------------------------------------------------
  84. float vec3_length(Vec3& self)
  85. {
  86. return self.length();
  87. }
  88. //------------------------------------------------------------
  89. float vec3_squared_length(Vec3& self)
  90. {
  91. return self.squared_length();
  92. }
  93. //------------------------------------------------------------
  94. void vec3_set_length(Vec3& self, float len)
  95. {
  96. self.set_length(len);
  97. }
  98. //------------------------------------------------------------
  99. Vec3& vec3_normalize(Vec3& self)
  100. {
  101. self.normalize();
  102. return self;
  103. }
  104. //------------------------------------------------------------
  105. Vec3& vec3_negate(Vec3& self)
  106. {
  107. self.negate();
  108. return self;
  109. }
  110. //------------------------------------------------------------
  111. float vec3_get_distance_to(Vec3& self, const Vec3& a)
  112. {
  113. return self.get_distance_to(a);
  114. }
  115. //------------------------------------------------------------
  116. float vec3_get_angle_between(Vec3& self, const Vec3& a)
  117. {
  118. return self.get_angle_between(a);
  119. }
  120. //------------------------------------------------------------
  121. void vec3_zero(Vec3& self)
  122. {
  123. self.zero();
  124. }
  125. } // namespace crown