Vector2f.cpp 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179
  1. #include "precompiled.h"
  2. #include "Vector2f.h"
  3. #include <Rocket/Core/Vector2.h>
  4. namespace Rocket {
  5. namespace Core {
  6. namespace Lua {
  7. int Vector2f__call(lua_State* L)
  8. {
  9. float x = (float)luaL_checknumber(L,1);
  10. float y = (float)luaL_checknumber(L,2);
  11. Vector2f* vect = new Vector2f(x,y);
  12. LuaType<Vector2f>::push(L,vect,true); //true means it will be deleted when it is garbage collected
  13. return 1;
  14. }
  15. int Vector2f__mul(lua_State* L)
  16. {
  17. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  18. float rhs = (float)luaL_checknumber(L,2);
  19. Vector2f* res = new Vector2f(*lhs);
  20. (*res) *= rhs;
  21. LuaType<Vector2f>::push(L,res,true);
  22. return 1;
  23. }
  24. int Vector2f__div(lua_State* L)
  25. {
  26. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  27. float rhs = (float)luaL_checknumber(L,2);
  28. Vector2f* res = new Vector2f(*lhs);
  29. (*res) /= rhs;
  30. LuaType<Vector2f>::push(L,res,true);
  31. return 1;
  32. }
  33. int Vector2f__add(lua_State* L)
  34. {
  35. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  36. Vector2f* rhs = LuaType<Vector2f>::check(L,1);
  37. Vector2f* res = new Vector2f(*lhs);
  38. (*res) += (*rhs);
  39. LuaType<Vector2f>::push(L,res,true);
  40. return 1;
  41. }
  42. int Vector2f__sub(lua_State* L)
  43. {
  44. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  45. Vector2f* rhs = LuaType<Vector2f>::check(L,1);
  46. Vector2f* res = new Vector2f(*lhs);
  47. (*res) -= (*rhs);
  48. LuaType<Vector2f>::push(L,res,true);
  49. return 1;
  50. }
  51. int Vector2f__eq(lua_State* L)
  52. {
  53. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  54. Vector2f* rhs = LuaType<Vector2f>::check(L,1);
  55. lua_pushboolean(L, (*lhs) == (*rhs) ? 1 : 0);
  56. return 1;
  57. }
  58. int Vector2fDotProduct(lua_State* L, Vector2f* obj)
  59. {
  60. Vector2f* rhs = LuaType<Vector2f>::check(L,1);
  61. float res = obj->DotProduct(*rhs);
  62. lua_pushnumber(L,res);
  63. return 1;
  64. }
  65. int Vector2fNormalise(lua_State* L, Vector2f* obj)
  66. {
  67. Vector2f* res = new Vector2f();
  68. (*res) = obj->Normalise();
  69. LuaType<Vector2f>::push(L,res,true);
  70. return 1;
  71. }
  72. int Vector2fRotate(lua_State* L, Vector2f* obj)
  73. {
  74. float num = (float)luaL_checknumber(L,1);
  75. Vector2f* res = new Vector2f();
  76. (*res) = obj->Rotate(num);
  77. LuaType<Vector2f>::push(L,res,true);
  78. return 1;
  79. }
  80. int Vector2fGetAttrx(lua_State*L)
  81. {
  82. Vector2f* self = LuaType<Vector2f>::check(L,1);
  83. lua_pushnumber(L,self->x);
  84. return 1;
  85. }
  86. int Vector2fGetAttry(lua_State*L)
  87. {
  88. Vector2f* self = LuaType<Vector2f>::check(L,1);
  89. lua_pushnumber(L,self->y);
  90. return 1;
  91. }
  92. int Vector2fGetAttrmagnitude(lua_State*L)
  93. {
  94. Vector2f* self = LuaType<Vector2f>::check(L,1);
  95. lua_pushnumber(L,self->Magnitude());
  96. return 1;
  97. }
  98. int Vector2fSetAttrx(lua_State*L)
  99. {
  100. Vector2f* self = LuaType<Vector2f>::check(L,1);
  101. float value = (float)luaL_checknumber(L,2);
  102. self->x = value;
  103. return 0;
  104. }
  105. int Vector2fSetAttry(lua_State*L)
  106. {
  107. Vector2f* self = LuaType<Vector2f>::check(L,1);
  108. float value = (float)luaL_checknumber(L,2);
  109. self->y = value;
  110. return 0;
  111. }
  112. RegType<Vector2f> Vector2fMethods[] =
  113. {
  114. LUAMETHOD(Vector2f,DotProduct)
  115. LUAMETHOD(Vector2f,Normalise)
  116. LUAMETHOD(Vector2f,Rotate)
  117. { NULL, NULL },
  118. };
  119. luaL_reg Vector2fGetters[]=
  120. {
  121. LUAGETTER(Vector2f,x)
  122. LUAGETTER(Vector2f,y)
  123. LUAGETTER(Vector2f,magnitude)
  124. { NULL, NULL },
  125. };
  126. luaL_reg Vector2fSetters[]=
  127. {
  128. LUASETTER(Vector2f,x)
  129. LUASETTER(Vector2f,y)
  130. { NULL, NULL },
  131. };
  132. }
  133. }
  134. }