godot_quat.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #include "godot_quat.h"
  2. #include "math/quat.h"
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6. void _quat_api_anchor() {
  7. }
  8. void GDAPI godot_quat_new(godot_quat *p_quat) {
  9. Quat *quat = (Quat *)p_quat;
  10. *quat = Quat();
  11. }
  12. void GDAPI godot_quat_new_with_elements(godot_quat *p_quat, const godot_real x, const godot_real y, const godot_real z, const godot_real w) {
  13. Quat *quat = (Quat *)p_quat;
  14. *quat = Quat(x, y, z, w);
  15. }
  16. void GDAPI godot_quat_new_with_rotation(godot_quat *p_quat, const godot_vector3 *p_axis, const godot_real p_angle) {
  17. Quat *quat = (Quat *)p_quat;
  18. const Vector3 *axis = (const Vector3 *)p_axis;
  19. *quat = Quat(*axis, p_angle);
  20. }
  21. void GDAPI godot_quat_new_with_shortest_arc(godot_quat *p_quat, const godot_vector3 *p_v0, const godot_vector3 *p_v1) {
  22. Quat *quat = (Quat *)p_quat;
  23. const Vector3 *v0 = (const Vector3 *)p_v0;
  24. const Vector3 *v1 = (const Vector3 *)p_v1;
  25. *quat = Quat(*v0, *v1);
  26. }
  27. godot_vector3 GDAPI godot_quat_get_euler(const godot_quat *p_quat) {
  28. Quat *quat = (Quat *)p_quat;
  29. Vector3 euler = quat->get_euler();
  30. return *(godot_vector3 *)&euler;
  31. }
  32. void GDAPI godot_quat_set_euler(godot_quat *p_quat, const godot_vector3 *p_euler) {
  33. Quat *quat = (Quat *)p_quat;
  34. const Vector3 *euler = (const Vector3 *)p_euler;
  35. quat->set_euler(*euler);
  36. }
  37. godot_real GDAPI *godot_quat_index(godot_quat *p_quat, const godot_int p_idx) {
  38. Quat *quat = (Quat *)p_quat;
  39. switch (p_idx) {
  40. case 0:
  41. return &quat->x;
  42. case 1:
  43. return &quat->y;
  44. case 2:
  45. return &quat->z;
  46. default:
  47. return &quat->y;
  48. }
  49. }
  50. godot_real GDAPI godot_quat_const_index(const godot_quat *p_quat, const godot_int p_idx) {
  51. const Quat *quat = (const Quat *)p_quat;
  52. switch (p_idx) {
  53. case 0:
  54. return quat->x;
  55. case 1:
  56. return quat->y;
  57. case 2:
  58. return quat->z;
  59. default:
  60. return quat->y;
  61. }
  62. }
  63. #ifdef __cplusplus
  64. }
  65. #endif