MathBinds.cpp 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. #include "lua.hpp"
  2. #include "MathUtils.h"
  3. #include "Types.h"
  4. #include "OS.h"
  5. namespace crown
  6. {
  7. extern "C"
  8. {
  9. // int32_t math_test_bitmask(lua_State* L, int32_t value, int32_t bitmask);
  10. // int32_t math_set_bitmask(lua_State* L, int32_t value, int32_t bitmask);
  11. // int32_t math_unset_bitmask(lua_State* L, int32_t value, int32_t bitmask);
  12. // int32_t math_deg_to_rad(lua_State* L, float deg);
  13. // int32_t math_rad_to_deg(lua_State* L, float rad);
  14. // int32_t math_next_pow_2(lua_State* L, uint32_t x);
  15. // int32_t math_is_pow_2(lua_State* L, uint32_t x);
  16. // int32_t math_ceil(lua_State* L, float x);
  17. // int32_t math_floor(lua_State* L, float x);
  18. // int32_t math_sqrt(lua_State* L, float x);
  19. // int32_t math_inv_sqrt(lua_State* L, float x);
  20. // int32_t math_sin(lua_State* L, float x);
  21. // int32_t math_cos(lua_State* L, float x);
  22. // int32_t math_asin(lua_State* L, float x);
  23. // int32_t math_acos(lua_State* L, float x);
  24. // int32_t math_tan(lua_State* L, float x);
  25. // int32_t math_atan2(lua_State* L, float y, float x);
  26. // int32_t math_abs(lua_State* L, float x);
  27. // int32_t math_fmod(lua_State* L, float n, float d);
  28. //-------------------------------------------------------------------
  29. int32_t math_equals(lua_State* L)
  30. {
  31. os::printf("binding called\n");
  32. float b = luaL_checknumber(L, 1);
  33. float a = luaL_checknumber(L, 1);
  34. lua_pushboolean(L, math::equals(a, b, math::FLOAT_PRECISION));
  35. return 1;
  36. }
  37. // //-------------------------------------------------------------------
  38. // int32_t math_test_bitmask(lua_State* L, int32_t value, int32_t bitmask)
  39. // {
  40. // return math::test_bitmask(value, bitmask);
  41. // }
  42. // //-------------------------------------------------------------------
  43. // int32_t math_set_bitmask(lua_State* L, int32_t value, int32_t bitmask)
  44. // {
  45. // return math::set_bitmask(value, bitmask);
  46. // }
  47. // //-------------------------------------------------------------------
  48. // int32_t math_unset_bitmask(lua_State* L, int32_t value, int32_t bitmask)
  49. // {
  50. // return math::unset_bitmask(value, bitmask);
  51. // }
  52. // //-------------------------------------------------------------------
  53. // int32_t math_deg_to_rad(lua_State* L, float deg)
  54. // {
  55. // return math::deg_to_rad(deg);
  56. // }
  57. // //-------------------------------------------------------------------
  58. // inatt32_t math_rad_to_deg(lua_State* L, float rad)
  59. // {
  60. // return math::rad_to_deg(rad);
  61. // }
  62. // //-------------------------------------------------------------------
  63. // int32_t math_next_pow_2(lua_State* L, uint32_t x)
  64. // {
  65. // return math::next_pow_2(x);
  66. // }
  67. // //-------------------------------------------------------------------
  68. // int32_t math_is_pow_2(lua_State* L, uint32_t x)
  69. // {
  70. // return math::is_pow_2(x);
  71. // }
  72. // //-------------------------------------------------------------------
  73. // int32_t math_ceil(lua_State* L, float x)
  74. // {
  75. // return math::ceil(x);
  76. // }
  77. // //-------------------------------------------------------------------
  78. // int32_t math_floor(lua_State* L, float x)
  79. // {
  80. // return math::floor(x);
  81. // }
  82. // //-------------------------------------------------------------------
  83. // int32_t math_sqrt(lua_State* L, float x)
  84. // {
  85. // return math::sqrt(x);
  86. // }
  87. // //-------------------------------------------------------------------
  88. // int32_t math_inv_sqrt(lua_State* L, float x)
  89. // {
  90. // return math::inv_sqrt(x);
  91. // }
  92. // //-------------------------------------------------------------------
  93. // int32_t math_sin(lua_State* L, float x)
  94. // {
  95. // return math::sin(x);
  96. // }
  97. // //-------------------------------------------------------------------
  98. // int32_t math_cos(lua_State* L, float x)
  99. // {
  100. // return math::cos(x);
  101. // }
  102. // //-------------------------------------------------------------------
  103. // int32_t math_asin(lua_State* L, float x)
  104. // {
  105. // return math::asin(x);
  106. // }
  107. // //-------------------------------------------------------------------
  108. // int32_t math_acos(lua_State* L, float x)
  109. // {
  110. // return math::acos(x);
  111. // }
  112. // //-------------------------------------------------------------------
  113. // int32_t math_tan(lua_State* L, float x)
  114. // {
  115. // return math::tan(x);
  116. // }
  117. // //-------------------------------------------------------------------
  118. // int32_t math_atan2(lua_State* L, float y, float x)
  119. // {
  120. // return math::atan2(y, x);
  121. // }
  122. // //-------------------------------------------------------------------
  123. // int32_t math_abs(lua_State* L, float x)
  124. // {
  125. // return math::abs(x);
  126. // }
  127. // //-------------------------------------------------------------------
  128. // int32_t math_fmod(lua_State* L, float n, float d)
  129. // {
  130. // return math::fmod(n, d);
  131. // }
  132. static const struct luaL_Reg Math [] = {
  133. {"equals", math_equals},
  134. {NULL, NULL}
  135. };
  136. int32_t luaopen_Math(lua_State* L)
  137. {
  138. luaL_register(L, "Math", Math);
  139. return 1;
  140. }
  141. }
  142. } // namespace crown