lua_PhysicsCollisionObjectCollisionPair.cpp 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. #include "Base.h"
  2. #include "ScriptController.h"
  3. #include "lua_PhysicsCollisionObjectCollisionPair.h"
  4. #include "Base.h"
  5. #include "Game.h"
  6. #include "Node.h"
  7. #include "PhysicsCollisionObject.h"
  8. #include "PhysicsController.h"
  9. #include "ScriptController.h"
  10. #include "lua_PhysicsCollisionObjectCollisionListenerEventType.h"
  11. #include "lua_PhysicsCollisionObjectType.h"
  12. #include "lua_PhysicsCollisionShapeType.h"
  13. namespace gameplay
  14. {
  15. void luaRegister_PhysicsCollisionObjectCollisionPair()
  16. {
  17. const luaL_Reg lua_members[] =
  18. {
  19. {"objectA", lua_PhysicsCollisionObjectCollisionPair_objectA},
  20. {"objectB", lua_PhysicsCollisionObjectCollisionPair_objectB},
  21. {NULL, NULL}
  22. };
  23. const luaL_Reg* lua_statics = NULL;
  24. std::vector<std::string> scopePath;
  25. scopePath.push_back("PhysicsCollisionObject");
  26. ScriptUtil::registerClass("PhysicsCollisionObjectCollisionPair", lua_members, lua_PhysicsCollisionObjectCollisionPair__init, lua_PhysicsCollisionObjectCollisionPair__gc, lua_statics, scopePath);
  27. }
  28. static PhysicsCollisionObject::CollisionPair* getInstance(lua_State* state)
  29. {
  30. void* userdata = luaL_checkudata(state, 1, "PhysicsCollisionObjectCollisionPair");
  31. luaL_argcheck(state, userdata != NULL, 1, "'PhysicsCollisionObjectCollisionPair' expected.");
  32. return (PhysicsCollisionObject::CollisionPair*)((ScriptUtil::LuaObject*)userdata)->instance;
  33. }
  34. int lua_PhysicsCollisionObjectCollisionPair__gc(lua_State* state)
  35. {
  36. // Get the number of parameters.
  37. int paramCount = lua_gettop(state);
  38. // Attempt to match the parameters to a valid binding.
  39. switch (paramCount)
  40. {
  41. case 1:
  42. {
  43. if ((lua_type(state, 1) == LUA_TUSERDATA))
  44. {
  45. void* userdata = luaL_checkudata(state, 1, "PhysicsCollisionObjectCollisionPair");
  46. luaL_argcheck(state, userdata != NULL, 1, "'PhysicsCollisionObjectCollisionPair' expected.");
  47. ScriptUtil::LuaObject* object = (ScriptUtil::LuaObject*)userdata;
  48. if (object->owns)
  49. {
  50. PhysicsCollisionObject::CollisionPair* instance = (PhysicsCollisionObject::CollisionPair*)object->instance;
  51. SAFE_DELETE(instance);
  52. }
  53. return 0;
  54. }
  55. else
  56. {
  57. lua_pushstring(state, "lua_PhysicsCollisionObjectCollisionPair__gc - Failed to match the given parameters to a valid function signature.");
  58. lua_error(state);
  59. }
  60. break;
  61. }
  62. default:
  63. {
  64. lua_pushstring(state, "Invalid number of parameters (expected 1).");
  65. lua_error(state);
  66. break;
  67. }
  68. }
  69. return 0;
  70. }
  71. int lua_PhysicsCollisionObjectCollisionPair__init(lua_State* state)
  72. {
  73. // Get the number of parameters.
  74. int paramCount = lua_gettop(state);
  75. // Attempt to match the parameters to a valid binding.
  76. switch (paramCount)
  77. {
  78. case 2:
  79. {
  80. if ((lua_type(state, 1) == LUA_TUSERDATA || lua_type(state, 1) == LUA_TTABLE || lua_type(state, 1) == LUA_TNIL) &&
  81. (lua_type(state, 2) == LUA_TUSERDATA || lua_type(state, 2) == LUA_TTABLE || lua_type(state, 2) == LUA_TNIL))
  82. {
  83. // Get parameter 1 off the stack.
  84. ScriptUtil::LuaArray<PhysicsCollisionObject> param1 = ScriptUtil::getObjectPointer<PhysicsCollisionObject>(1, "PhysicsCollisionObject", false);
  85. // Get parameter 2 off the stack.
  86. ScriptUtil::LuaArray<PhysicsCollisionObject> param2 = ScriptUtil::getObjectPointer<PhysicsCollisionObject>(2, "PhysicsCollisionObject", false);
  87. void* returnPtr = (void*)new PhysicsCollisionObject::CollisionPair(param1, param2);
  88. if (returnPtr)
  89. {
  90. ScriptUtil::LuaObject* object = (ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(ScriptUtil::LuaObject));
  91. object->instance = returnPtr;
  92. object->owns = true;
  93. luaL_getmetatable(state, "PhysicsCollisionObjectCollisionPair");
  94. lua_setmetatable(state, -2);
  95. }
  96. else
  97. {
  98. lua_pushnil(state);
  99. }
  100. return 1;
  101. }
  102. else
  103. {
  104. lua_pushstring(state, "lua_PhysicsCollisionObjectCollisionPair__init - Failed to match the given parameters to a valid function signature.");
  105. lua_error(state);
  106. }
  107. break;
  108. }
  109. default:
  110. {
  111. lua_pushstring(state, "Invalid number of parameters (expected 2).");
  112. lua_error(state);
  113. break;
  114. }
  115. }
  116. return 0;
  117. }
  118. int lua_PhysicsCollisionObjectCollisionPair_objectA(lua_State* state)
  119. {
  120. // Validate the number of parameters.
  121. if (lua_gettop(state) > 2)
  122. {
  123. lua_pushstring(state, "Invalid number of parameters (expected 1 or 2).");
  124. lua_error(state);
  125. }
  126. PhysicsCollisionObject::CollisionPair* instance = getInstance(state);
  127. if (lua_gettop(state) == 2)
  128. {
  129. // Get parameter 2 off the stack.
  130. ScriptUtil::LuaArray<PhysicsCollisionObject> param2 = ScriptUtil::getObjectPointer<PhysicsCollisionObject>(2, "PhysicsCollisionObject", false);
  131. instance->objectA = param2;
  132. return 0;
  133. }
  134. else
  135. {
  136. void* returnPtr = (void*)instance->objectA;
  137. if (returnPtr)
  138. {
  139. ScriptUtil::LuaObject* object = (ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(ScriptUtil::LuaObject));
  140. object->instance = returnPtr;
  141. object->owns = false;
  142. luaL_getmetatable(state, "PhysicsCollisionObject");
  143. lua_setmetatable(state, -2);
  144. }
  145. else
  146. {
  147. lua_pushnil(state);
  148. }
  149. return 1;
  150. }
  151. }
  152. int lua_PhysicsCollisionObjectCollisionPair_objectB(lua_State* state)
  153. {
  154. // Validate the number of parameters.
  155. if (lua_gettop(state) > 2)
  156. {
  157. lua_pushstring(state, "Invalid number of parameters (expected 1 or 2).");
  158. lua_error(state);
  159. }
  160. PhysicsCollisionObject::CollisionPair* instance = getInstance(state);
  161. if (lua_gettop(state) == 2)
  162. {
  163. // Get parameter 2 off the stack.
  164. ScriptUtil::LuaArray<PhysicsCollisionObject> param2 = ScriptUtil::getObjectPointer<PhysicsCollisionObject>(2, "PhysicsCollisionObject", false);
  165. instance->objectB = param2;
  166. return 0;
  167. }
  168. else
  169. {
  170. void* returnPtr = (void*)instance->objectB;
  171. if (returnPtr)
  172. {
  173. ScriptUtil::LuaObject* object = (ScriptUtil::LuaObject*)lua_newuserdata(state, sizeof(ScriptUtil::LuaObject));
  174. object->instance = returnPtr;
  175. object->owns = false;
  176. luaL_getmetatable(state, "PhysicsCollisionObject");
  177. lua_setmetatable(state, -2);
  178. }
  179. else
  180. {
  181. lua_pushnil(state);
  182. }
  183. return 1;
  184. }
  185. }
  186. }