lua_PhysicsCollisionShapeDefinition.cpp 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. #include "Base.h"
  2. #include "ScriptController.h"
  3. #include "PhysicsCollisionShape.h"
  4. #include "lua_PhysicsCollisionShapeDefinition.h"
  5. #include "lua_Global.h"
  6. namespace gameplay
  7. {
  8. void luaRegister_PhysicsCollisionShapeDefinition()
  9. {
  10. ScriptController* sc = ScriptController::getInstance();
  11. const luaL_Reg lua_members[] =
  12. {
  13. {NULL, NULL}
  14. };
  15. const luaL_Reg* lua_statics = NULL;
  16. std::vector<std::string> scopePath;
  17. scopePath.push_back("PhysicsCollisionShape");
  18. sc->registerClass("PhysicsCollisionShapeDefinition", lua_members, lua_PhysicsCollisionShapeDefinition__init, lua_PhysicsCollisionShapeDefinition__gc, lua_statics, scopePath);
  19. }
  20. static PhysicsCollisionShape::Definition* getInstance(lua_State* state)
  21. {
  22. void* userdata = luaL_checkudata(state, 1, "PhysicsCollisionShapeDefinition");
  23. luaL_argcheck(state, userdata != NULL, 1, "'PhysicsCollisionShapeDefinition' expected.");
  24. return (PhysicsCollisionShape::Definition*)((ScriptController::LuaObject*)userdata)->instance;
  25. }
  26. int lua_PhysicsCollisionShapeDefinition__gc(lua_State* state)
  27. {
  28. // Get the number of parameters.
  29. int paramCount = lua_gettop(state);
  30. // Attempt to match the parameters to a valid binding.
  31. switch (paramCount)
  32. {
  33. case 1:
  34. {
  35. if ((lua_type(state, 1) == LUA_TUSERDATA || lua_type(state, 1) == LUA_TNIL))
  36. {
  37. void* userdata = luaL_checkudata(state, 1, "PhysicsCollisionShapeDefinition");
  38. luaL_argcheck(state, userdata != NULL, 1, "'PhysicsCollisionShapeDefinition' expected.");
  39. ScriptController::LuaObject* object = (ScriptController::LuaObject*)userdata;
  40. if (object->owns)
  41. {
  42. PhysicsCollisionShape::Definition* instance = (PhysicsCollisionShape::Definition*)object->instance;
  43. SAFE_DELETE(instance);
  44. }
  45. return 0;
  46. }
  47. else
  48. {
  49. lua_pushstring(state, "Failed to match the given parameters to a valid function signature.");
  50. lua_error(state);
  51. }
  52. break;
  53. }
  54. default:
  55. {
  56. lua_pushstring(state, "Invalid number of parameters (expected 1).");
  57. lua_error(state);
  58. break;
  59. }
  60. }
  61. return 0;
  62. }
  63. int lua_PhysicsCollisionShapeDefinition__init(lua_State* state)
  64. {
  65. // Get the number of parameters.
  66. int paramCount = lua_gettop(state);
  67. // Attempt to match the parameters to a valid binding.
  68. switch (paramCount)
  69. {
  70. case 0:
  71. {
  72. void* returnPtr = (void*)new PhysicsCollisionShape::Definition();
  73. if (returnPtr)
  74. {
  75. ScriptController::LuaObject* object = (ScriptController::LuaObject*)lua_newuserdata(state, sizeof(ScriptController::LuaObject));
  76. object->instance = returnPtr;
  77. object->owns = true;
  78. luaL_getmetatable(state, "PhysicsCollisionShapeDefinition");
  79. lua_setmetatable(state, -2);
  80. }
  81. else
  82. {
  83. lua_pushnil(state);
  84. }
  85. return 1;
  86. break;
  87. }
  88. case 1:
  89. {
  90. if ((lua_type(state, 1) == LUA_TUSERDATA || lua_type(state, 1) == LUA_TNIL))
  91. {
  92. // Get parameter 1 off the stack.
  93. PhysicsCollisionShape::Definition* param1 = ScriptController::getInstance()->getObjectPointer<PhysicsCollisionShape::Definition>(1, "PhysicsCollisionShapeDefinition", true);
  94. void* returnPtr = (void*)new PhysicsCollisionShape::Definition(*param1);
  95. if (returnPtr)
  96. {
  97. ScriptController::LuaObject* object = (ScriptController::LuaObject*)lua_newuserdata(state, sizeof(ScriptController::LuaObject));
  98. object->instance = returnPtr;
  99. object->owns = true;
  100. luaL_getmetatable(state, "PhysicsCollisionShapeDefinition");
  101. lua_setmetatable(state, -2);
  102. }
  103. else
  104. {
  105. lua_pushnil(state);
  106. }
  107. return 1;
  108. }
  109. else
  110. {
  111. lua_pushstring(state, "Failed to match the given parameters to a valid function signature.");
  112. lua_error(state);
  113. }
  114. break;
  115. }
  116. default:
  117. {
  118. lua_pushstring(state, "Invalid number of parameters (expected 0 or 1).");
  119. lua_error(state);
  120. break;
  121. }
  122. }
  123. return 0;
  124. }
  125. }