From 048b62324f0bd746ef8db803522030c06d6d6f6b Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 15 May 2017 23:42:09 -0600 Subject: [PATCH] Body:isAwake; Body:setAwake; --- src/api/types/body.c | 15 +++++++++++++++ src/physics/physics.c | 12 ++++++++++++ src/physics/physics.h | 2 ++ 3 files changed, 29 insertions(+) diff --git a/src/api/types/body.c b/src/api/types/body.c index 73d071d9..1e3a7b28 100644 --- a/src/api/types/body.c +++ b/src/api/types/body.c @@ -244,6 +244,19 @@ int l_lovrBodySetSleepingAllowed(lua_State* L) { return 0; } +int l_lovrBodyIsAwake(lua_State* L) { + Body* body = luax_checktype(L, 1, Body); + lua_pushboolean(L, lovrBodyIsAwake(body)); + return 1; +} + +int l_lovrBodySetAwake(lua_State* L) { + Body* body = luax_checktype(L, 1, Body); + int awake = lua_toboolean(L, 2); + lovrBodySetAwake(body, awake); + return 0; +} + const luaL_Reg lovrBody[] = { { "getPosition", l_lovrBodyGetPosition }, { "setPosition", l_lovrBodySetPosition }, @@ -269,5 +282,7 @@ const luaL_Reg lovrBody[] = { { "getLinearVelocityFromWorldPoint", l_lovrBodyGetLinearVelocityFromWorldPoint }, { "isSleepingAllowed", l_lovrBodyIsSleepingAllowed }, { "setSleepingAllowed", l_lovrBodySetSleepingAllowed }, + { "isAwake", l_lovrBodyIsAwake }, + { "setAwake", l_lovrBodySetAwake }, { NULL, NULL } }; diff --git a/src/physics/physics.c b/src/physics/physics.c index 25cd7f51..406bd865 100644 --- a/src/physics/physics.c +++ b/src/physics/physics.c @@ -240,3 +240,15 @@ int lovrBodyIsSleepingAllowed(Body* body) { void lovrBodySetSleepingAllowed(Body* body, int allowed) { dBodySetAutoDisableFlag(body->id, allowed); } + +int lovrBodyIsAwake(Body* body) { + return dBodyIsEnabled(body->id); +} + +void lovrBodySetAwake(Body* body, int awake) { + if (awake) { + dBodyEnable(body->id); + } else { + dBodyDisable(body->id); + } +} diff --git a/src/physics/physics.h b/src/physics/physics.h index fe7df235..d3d19176 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -54,3 +54,5 @@ void lovrBodyGetLinearVelocityFromLocalPoint(Body* body, float x, float y, float 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); +int lovrBodyIsAwake(Body* body); +void lovrBodySetAwake(Body* body, int awake);