2017-05-16 04:59:53 +00:00
|
|
|
#include "api/lovr.h"
|
|
|
|
#include "physics/physics.h"
|
|
|
|
|
2017-05-16 18:17:01 +00:00
|
|
|
map_int_t ShapeTypes;
|
|
|
|
|
2017-05-16 04:59:53 +00:00
|
|
|
int l_lovrPhysicsInit(lua_State* L) {
|
|
|
|
lua_newtable(L);
|
|
|
|
luaL_register(L, NULL, lovrPhysics);
|
2017-05-16 05:02:08 +00:00
|
|
|
luax_registertype(L, "World", lovrWorld);
|
2017-05-16 05:09:32 +00:00
|
|
|
luax_registertype(L, "Body", lovrBody);
|
2017-05-16 18:17:01 +00:00
|
|
|
|
|
|
|
map_init(&ShapeTypes);
|
|
|
|
map_set(&ShapeTypes, "sphere", SHAPE_SPHERE);
|
|
|
|
map_set(&ShapeTypes, "box", SHAPE_BOX);
|
|
|
|
map_set(&ShapeTypes, "capsule", SHAPE_CAPSULE);
|
|
|
|
map_set(&ShapeTypes, "cylinder", SHAPE_CYLINDER);
|
|
|
|
|
2017-05-16 04:59:53 +00:00
|
|
|
lovrPhysicsInit();
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:02:08 +00:00
|
|
|
int l_lovrPhysicsNewWorld(lua_State* L) {
|
|
|
|
luax_pushtype(L, World, lovrWorldCreate());
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:09:32 +00:00
|
|
|
int l_lovrPhysicsNewBody(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
luax_pushtype(L, Body, lovrBodyCreate(world));
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
2017-05-16 04:59:53 +00:00
|
|
|
const luaL_Reg lovrPhysics[] = {
|
2017-05-16 05:02:08 +00:00
|
|
|
{ "newWorld", l_lovrPhysicsNewWorld },
|
2017-05-16 05:09:32 +00:00
|
|
|
{ "newBody", l_lovrPhysicsNewBody },
|
2017-05-16 04:59:53 +00:00
|
|
|
{ NULL, NULL }
|
|
|
|
};
|