Vector2f.cpp 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  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 Vector2fnew(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. LUACHECKOBJ(lhs);
  19. float rhs = (float)luaL_checknumber(L,2);
  20. Vector2f* res = new Vector2f(*lhs);
  21. (*res) *= rhs;
  22. LuaType<Vector2f>::push(L,res,true);
  23. return 1;
  24. }
  25. int Vector2f__div(lua_State* L)
  26. {
  27. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  28. LUACHECKOBJ(lhs);
  29. float rhs = (float)luaL_checknumber(L,2);
  30. Vector2f* res = new Vector2f(*lhs);
  31. (*res) /= rhs;
  32. LuaType<Vector2f>::push(L,res,true);
  33. return 1;
  34. }
  35. int Vector2f__add(lua_State* L)
  36. {
  37. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  38. LUACHECKOBJ(lhs);
  39. Vector2f* rhs = LuaType<Vector2f>::check(L,2);
  40. LUACHECKOBJ(rhs);
  41. Vector2f* res = new Vector2f(*lhs);
  42. (*res) += (*rhs);
  43. LuaType<Vector2f>::push(L,res,true);
  44. return 1;
  45. }
  46. int Vector2f__sub(lua_State* L)
  47. {
  48. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  49. LUACHECKOBJ(lhs);
  50. Vector2f* rhs = LuaType<Vector2f>::check(L,2);
  51. LUACHECKOBJ(rhs);
  52. Vector2f* res = new Vector2f(*lhs);
  53. (*res) -= (*rhs);
  54. LuaType<Vector2f>::push(L,res,true);
  55. return 1;
  56. }
  57. int Vector2f__eq(lua_State* L)
  58. {
  59. Vector2f* lhs = LuaType<Vector2f>::check(L,1);
  60. LUACHECKOBJ(lhs);
  61. Vector2f* rhs = LuaType<Vector2f>::check(L,2);
  62. LUACHECKOBJ(rhs);
  63. lua_pushboolean(L, (*lhs) == (*rhs) ? 1 : 0);
  64. return 1;
  65. }
  66. int Vector2fDotProduct(lua_State* L, Vector2f* obj)
  67. {
  68. Vector2f* rhs = LuaType<Vector2f>::check(L,1);
  69. LUACHECKOBJ(rhs);
  70. float res = obj->DotProduct(*rhs);
  71. lua_pushnumber(L,res);
  72. return 1;
  73. }
  74. int Vector2fNormalise(lua_State* L, Vector2f* obj)
  75. {
  76. Vector2f* res = new Vector2f();
  77. (*res) = obj->Normalise();
  78. LuaType<Vector2f>::push(L,res,true);
  79. return 1;
  80. }
  81. int Vector2fRotate(lua_State* L, Vector2f* obj)
  82. {
  83. float num = (float)luaL_checknumber(L,1);
  84. Vector2f* res = new Vector2f();
  85. (*res) = obj->Rotate(num);
  86. LuaType<Vector2f>::push(L,res,true);
  87. return 1;
  88. }
  89. int Vector2fGetAttrx(lua_State*L)
  90. {
  91. Vector2f* self = LuaType<Vector2f>::check(L,1);
  92. LUACHECKOBJ(self);
  93. lua_pushnumber(L,self->x);
  94. return 1;
  95. }
  96. int Vector2fGetAttry(lua_State*L)
  97. {
  98. Vector2f* self = LuaType<Vector2f>::check(L,1);
  99. LUACHECKOBJ(self);
  100. lua_pushnumber(L,self->y);
  101. return 1;
  102. }
  103. int Vector2fGetAttrmagnitude(lua_State*L)
  104. {
  105. Vector2f* self = LuaType<Vector2f>::check(L,1);
  106. LUACHECKOBJ(self);
  107. lua_pushnumber(L,self->Magnitude());
  108. return 1;
  109. }
  110. int Vector2fSetAttrx(lua_State*L)
  111. {
  112. Vector2f* self = LuaType<Vector2f>::check(L,1);
  113. LUACHECKOBJ(self);
  114. float value = (float)luaL_checknumber(L,2);
  115. self->x = value;
  116. return 0;
  117. }
  118. int Vector2fSetAttry(lua_State*L)
  119. {
  120. Vector2f* self = LuaType<Vector2f>::check(L,1);
  121. LUACHECKOBJ(self);
  122. float value = (float)luaL_checknumber(L,2);
  123. self->y = value;
  124. return 0;
  125. }
  126. RegType<Vector2f> Vector2fMethods[] =
  127. {
  128. LUAMETHOD(Vector2f,DotProduct)
  129. LUAMETHOD(Vector2f,Normalise)
  130. LUAMETHOD(Vector2f,Rotate)
  131. { NULL, NULL },
  132. };
  133. luaL_reg Vector2fGetters[]=
  134. {
  135. LUAGETTER(Vector2f,x)
  136. LUAGETTER(Vector2f,y)
  137. LUAGETTER(Vector2f,magnitude)
  138. { NULL, NULL },
  139. };
  140. luaL_reg Vector2fSetters[]=
  141. {
  142. LUASETTER(Vector2f,x)
  143. LUASETTER(Vector2f,y)
  144. { NULL, NULL },
  145. };
  146. }
  147. }
  148. }