QuatBinds.cpp 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. #include "Device.h"
  2. #include "ScriptSystem.h"
  3. namespace crown
  4. {
  5. /// Lightweight bind for Quat
  6. extern "C"
  7. {
  8. Quat& quat(float angle, const Vec3& v);
  9. void quat_negate(Quat& self);
  10. void quat_load_identity(Quat& self);
  11. float quat_length(Quat& self);
  12. void quat_conjugate(Quat& self);
  13. Quat& quat_inverse(Quat& self);
  14. Quat& quat_cross(Quat& self, const Quat& b);
  15. Quat& quat_multiply(Quat& self, const float& k);
  16. Quat& quat_power(Quat& self, float exp);
  17. }
  18. Quat& quat(float angle, const Vec3& v)
  19. {
  20. return device()->script_system()->next_quat(angle, v);
  21. }
  22. void quat_negate(Quat& self)
  23. {
  24. self.negate();
  25. }
  26. void quat_load_identity(Quat& self)
  27. {
  28. self.load_identity();
  29. }
  30. float quat_length(Quat& self)
  31. {
  32. return self.length();
  33. }
  34. void quat_conjugate(Quat& self)
  35. {
  36. self.conjugate();
  37. }
  38. Quat& quat_inverse(Quat& self)
  39. {
  40. self.conjugate();
  41. self = self * (1.0f / self.length());
  42. return self;
  43. }
  44. Quat& quat_cross(Quat& self, const Quat& b)
  45. {
  46. self = self * b;
  47. return self;
  48. }
  49. Quat& quat_multiply(Quat& self, const float& k)
  50. {
  51. self = self * k;
  52. return self;
  53. }
  54. Quat& quat_power(Quat& self, float exp)
  55. {
  56. self.power(exp);
  57. return self;
  58. }
  59. } //namespace crown