From 1a4193831cc23bbcc329b4ee7f485b68e7e0f1e6 Mon Sep 17 00:00:00 2001 From: bjorn Date: Mon, 15 May 2017 23:14:07 -0600 Subject: [PATCH] Body:getLinearDamping; Body:setLinearDamping; --- src/api/types/body.c | 19 +++++++++++++++++++ src/physics/physics.c | 10 ++++++++++ src/physics/physics.h | 2 ++ 3 files changed, 31 insertions(+) diff --git a/src/api/types/body.c b/src/api/types/body.c index a25d434a..b1443e34 100644 --- a/src/api/types/body.c +++ b/src/api/types/body.c @@ -79,6 +79,23 @@ int l_lovrBodySetAngularVelocity(lua_State* L) { return 0; } +int l_lovrBodyGetLinearDamping(lua_State* L) { + Body* body = luax_checktype(L, 1, Body); + float damping, threshold; + lovrBodyGetLinearDamping(body, &damping, &threshold); + lua_pushnumber(L, damping); + lua_pushnumber(L, threshold); + return 2; +} + +int l_lovrBodySetLinearDamping(lua_State* L) { + Body* body = luax_checktype(L, 1, Body); + float damping = luaL_checknumber(L, 2); + float threshold = luaL_optnumber(L, 3, .01); + lovrBodySetLinearDamping(body, damping, threshold); + return 0; +} + const luaL_Reg lovrBody[] = { { "getPosition", l_lovrBodyGetPosition }, { "setPosition", l_lovrBodySetPosition }, @@ -88,5 +105,7 @@ const luaL_Reg lovrBody[] = { { "setLinearVelocity", l_lovrBodySetLinearVelocity }, { "getAngularVelocity", l_lovrBodyGetAngularVelocity }, { "setAngularVelocity", l_lovrBodySetAngularVelocity }, + { "getLinearDamping", l_lovrBodyGetLinearDamping }, + { "setLinearDamping", l_lovrBodySetLinearDamping }, { NULL, NULL } }; diff --git a/src/physics/physics.c b/src/physics/physics.c index 4d8b857a..8571b0dd 100644 --- a/src/physics/physics.c +++ b/src/physics/physics.c @@ -140,3 +140,13 @@ void lovrBodyGetAngularVelocity(Body* body, float* x, float* y, float* z) { void lovrBodySetAngularVelocity(Body* body, float x, float y, float z) { dBodySetAngularVel(body->id, x, y, z); } + +void lovrBodyGetLinearDamping(Body* body, float* damping, float* threshold) { + *damping = dBodyGetLinearDamping(body->id); + *threshold = dBodyGetLinearDampingThreshold(body->id); +} + +void lovrBodySetLinearDamping(Body* body, float damping, float threshold) { + dBodySetLinearDamping(body->id, damping); + dBodySetLinearDampingThreshold(body->id, threshold); +} diff --git a/src/physics/physics.h b/src/physics/physics.h index 4292a6f5..e7211a7e 100644 --- a/src/physics/physics.h +++ b/src/physics/physics.h @@ -37,3 +37,5 @@ void lovrBodyGetLinearVelocity(Body* body, float* x, float* y, float* z); void lovrBodySetLinearVelocity(Body* body, float x, float y, float z); void lovrBodyGetAngularVelocity(Body* body, float* x, float* y, float* z); void lovrBodySetAngularVelocity(Body* body, float x, float y, float z); +void lovrBodyGetLinearDamping(Body* body, float* damping, float* threshold); +void lovrBodySetLinearDamping(Body* body, float damping, float threshold);