2017-05-16 05:02:08 +00:00
|
|
|
#include "api/lovr.h"
|
|
|
|
#include "physics/physics.h"
|
|
|
|
|
2017-05-16 05:03:01 +00:00
|
|
|
int l_lovrWorldGetGravity(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float x, y, z;
|
|
|
|
lovrWorldGetGravity(world, &x, &y, &z);
|
|
|
|
lua_pushnumber(L, x);
|
|
|
|
lua_pushnumber(L, y);
|
|
|
|
lua_pushnumber(L, z);
|
|
|
|
return 3;
|
|
|
|
}
|
|
|
|
|
|
|
|
int l_lovrWorldSetGravity(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float x = luaL_checknumber(L, 2);
|
|
|
|
float y = luaL_checknumber(L, 3);
|
|
|
|
float z = luaL_checknumber(L, 4);
|
|
|
|
lovrWorldSetGravity(world, x, y, z);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:05:48 +00:00
|
|
|
int l_lovrWorldGetLinearDamping(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float damping, threshold;
|
|
|
|
lovrWorldGetLinearDamping(world, &damping, &threshold);
|
|
|
|
lua_pushnumber(L, damping);
|
|
|
|
lua_pushnumber(L, threshold);
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
int l_lovrWorldSetLinearDamping(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float damping = luaL_checknumber(L, 2);
|
|
|
|
float threshold = luaL_optnumber(L, 3, .01);
|
|
|
|
lovrWorldSetLinearDamping(world, damping, threshold);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:07:54 +00:00
|
|
|
int l_lovrWorldGetAngularDamping(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float damping, threshold;
|
|
|
|
lovrWorldGetAngularDamping(world, &damping, &threshold);
|
|
|
|
lua_pushnumber(L, damping);
|
|
|
|
lua_pushnumber(L, threshold);
|
|
|
|
return 2;
|
|
|
|
}
|
|
|
|
|
|
|
|
int l_lovrWorldSetAngularDamping(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float damping = luaL_checknumber(L, 2);
|
|
|
|
float threshold = luaL_optnumber(L, 3, .01);
|
|
|
|
lovrWorldSetAngularDamping(world, damping, threshold);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:08:27 +00:00
|
|
|
int l_lovrWorldIsSleepingAllowed(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
lua_pushboolean(L, lovrWorldIsSleepingAllowed(world));
|
|
|
|
return 1;
|
|
|
|
}
|
|
|
|
|
|
|
|
int l_lovrWorldSetSleepingAllowed(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
int allowed = lua_toboolean(L, 2);
|
|
|
|
lovrWorldSetSleepingAllowed(world, allowed);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:04:05 +00:00
|
|
|
int l_lovrWorldUpdate(lua_State* L) {
|
|
|
|
World* world = luax_checktype(L, 1, World);
|
|
|
|
float dt = luaL_checknumber(L, 2);
|
|
|
|
lovrWorldUpdate(world, dt);
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
|
2017-05-16 05:02:08 +00:00
|
|
|
const luaL_Reg lovrWorld[] = {
|
2017-05-16 05:03:01 +00:00
|
|
|
{ "getGravity", l_lovrWorldGetGravity },
|
|
|
|
{ "setGravity", l_lovrWorldSetGravity },
|
2017-05-16 05:05:48 +00:00
|
|
|
{ "getLinearDamping", l_lovrWorldGetLinearDamping },
|
|
|
|
{ "setLinearDamping", l_lovrWorldSetLinearDamping },
|
2017-05-16 05:07:54 +00:00
|
|
|
{ "getAngularDamping", l_lovrWorldGetAngularDamping },
|
|
|
|
{ "setAngularDamping", l_lovrWorldSetAngularDamping },
|
2017-05-16 05:08:27 +00:00
|
|
|
{ "isSleepingAllowed", l_lovrWorldIsSleepingAllowed },
|
|
|
|
{ "setSleepingAllowed", l_lovrWorldSetSleepingAllowed },
|
2017-05-16 05:04:05 +00:00
|
|
|
{ "update", l_lovrWorldUpdate },
|
2017-05-16 05:02:08 +00:00
|
|
|
{ NULL, NULL }
|
|
|
|
};
|