From ded560284600e507b530fa76b71052d080485ad2 Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 15 May 2017 23:40:30 -0600 Subject: [PATCH] Body:isSleepingAllowed; Body:setSleepingAllowed; --- src/api/types/body.c | 15 +++++++++++++++ src/physics/physics.c | 8 ++++++++ src/physics/physics.h | 2 ++ 3 files changed, 25 insertions(+) diff --git a/src/api/types/body.c b/src/api/types/body.c index 42f3de63..73d071d9 100644 --- a/src/api/types/body.c +++ b/src/api/types/body.c @@ -231,6 +231,19 @@ int l_lovrBodyGetLinearVelocityFromWorldPoint(lua_State* L) { return 3; } +int l_lovrBodyIsSleepingAllowed(lua_State* L) { + Body* body = luax_checktype(L, 1, Body); + lua_pushboolean(L, lovrBodyIsSleepingAllowed(body)); + return 1; +} + +int l_lovrBodySetSleepingAllowed(lua_State* L) { + Body* body = luax_checktype(L, 1, Body); + int allowed = lua_toboolean(L, 2); + lovrBodySetSleepingAllowed(body, allowed); + return 0; +} + const luaL_Reg lovrBody[] = { { "getPosition", l_lovrBodyGetPosition }, { "setPosition", l_lovrBodySetPosition }, @@ -254,5 +267,7 @@ const luaL_Reg lovrBody[] = { { "getWorldVector", l_lovrBodyGetWorldVector }, { "getLinearVelocityFromLocalPoint", l_lovrBodyGetLinearVelocityFromLocalPoint }, { "getLinearVelocityFromWorldPoint", l_lovrBodyGetLinearVelocityFromWorldPoint }, + { "isSleepingAllowed", l_lovrBodyIsSleepingAllowed }, + { "setSleepingAllowed", l_lovrBodySetSleepingAllowed }, { NULL, NULL } }; diff --git a/src/physics/physics.c b/src/physics/physics.c index 53d37973..25cd7f51 100644 --- a/src/physics/physics.c +++ b/src/physics/physics.c @@ -232,3 +232,11 @@ void lovrBodyGetLinearVelocityFromWorldPoint(Body* body, float wx, float wy, flo *vy = velocity[1]; *vz = velocity[2]; } + +int lovrBodyIsSleepingAllowed(Body* body) { + return dBodyGetAutoDisableFlag(body->id); +} + +void lovrBodySetSleepingAllowed(Body* body, int allowed) { + dBodySetAutoDisableFlag(body->id, allowed); +} diff --git a/src/physics/physics.h b/src/physics/physics.h index 388e0345..fe7df235 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -52,3 +52,5 @@ void lovrBodyGetLocalVector(Body* body, float wx, float wy, float wz, float* x, void lovrBodyGetWorldVector(Body* body, float x, float y, float z, float* wx, float* wy, float* wz); void lovrBodyGetLinearVelocityFromLocalPoint(Body* body, float x, float y, float z, float* vx, float* vy, float* vz); void lovrBodyGetLinearVelocityFromWorldPoint(Body* body, float wx, float wy, float wz, float* vx, float* vy, float* vz); +int lovrBodyIsSleepingAllowed(Body* body); +void lovrBodySetSleepingAllowed(Body* body, int allowed);