diff --git a/src/api/types/world.c b/src/api/types/world.c index b8ec2797..eee2ca5f 100644 --- a/src/api/types/world.c +++ b/src/api/types/world.c @@ -54,6 +54,19 @@ int l_lovrWorldSetAngularDamping(lua_State* L) { return 0; } +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; +} + int l_lovrWorldUpdate(lua_State* L) { World* world = luax_checktype(L, 1, World); float dt = luaL_checknumber(L, 2); @@ -68,6 +81,8 @@ const luaL_Reg lovrWorld[] = { { "setLinearDamping", l_lovrWorldSetLinearDamping }, { "getAngularDamping", l_lovrWorldGetAngularDamping }, { "setAngularDamping", l_lovrWorldSetAngularDamping }, + { "isSleepingAllowed", l_lovrWorldIsSleepingAllowed }, + { "setSleepingAllowed", l_lovrWorldSetSleepingAllowed }, { "update", l_lovrWorldUpdate }, { NULL, NULL } }; diff --git a/src/physics/physics.c b/src/physics/physics.c index 15798b11..8cf92c4c 100644 --- a/src/physics/physics.c +++ b/src/physics/physics.c @@ -62,6 +62,14 @@ void lovrWorldSetAngularDamping(World* world, float damping, float threshold) { dWorldSetAngularDampingThreshold(world->id, threshold); } +int lovrWorldIsSleepingAllowed(World* world) { + return dWorldGetAutoDisableFlag(world->id); +} + +void lovrWorldSetSleepingAllowed(World* world, int allowed) { + dWorldSetAutoDisableFlag(world->id, allowed); +} + void lovrWorldUpdate(World* world, float dt) { dWorldQuickStep(world->id, dt); } diff --git a/src/physics/physics.h b/src/physics/physics.h index 1b61abfe..00b7ac44 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -17,4 +17,6 @@ void lovrWorldGetLinearDamping(World* world, float* damping, float* threshold); void lovrWorldSetLinearDamping(World* world, float damping, float threshold); void lovrWorldGetAngularDamping(World* world, float* damping, float* threshold); void lovrWorldSetAngularDamping(World* world, float damping, float threshold); +int lovrWorldIsSleepingAllowed(World* world); +void lovrWorldSetSleepingAllowed(World* world, int allowed); void lovrWorldUpdate(World* world, float dt);