Body:applyForce; Body:applyTorque;

This commit is contained in:
bjorn 2017-05-15 23:15:22 -06:00
parent 18b9c8cdae
commit 8a0f37a0ae
3 changed files with 44 additions and 0 deletions

View File

@ -113,6 +113,33 @@ int l_lovrBodySetAngularDamping(lua_State* L) {
return 0;
}
int l_lovrBodyApplyForce(lua_State* L) {
Body* body = luax_checktype(L, 1, Body);
float x = luaL_checknumber(L, 2);
float y = luaL_checknumber(L, 3);
float z = luaL_checknumber(L, 4);
if (lua_gettop(L) > 4) {
float cx = luaL_checknumber(L, 5);
float cy = luaL_checknumber(L, 6);
float cz = luaL_checknumber(L, 7);
lovrBodyApplyForceAtPosition(body, x, y, z, cx, cy, cz);
} else {
lovrBodyApplyForce(body, x, y, z);
}
return 0;
}
int l_lovrBodyApplyTorque(lua_State* L) {
Body* body = luax_checktype(L, 1, Body);
float x = luaL_checknumber(L, 2);
float y = luaL_checknumber(L, 3);
float z = luaL_checknumber(L, 4);
lovrBodyApplyTorque(body, x, y, z);
return 0;
}
const luaL_Reg lovrBody[] = {
{ "getPosition", l_lovrBodyGetPosition },
{ "setPosition", l_lovrBodySetPosition },
@ -126,5 +153,7 @@ const luaL_Reg lovrBody[] = {
{ "setLinearDamping", l_lovrBodySetLinearDamping },
{ "getAngularDamping", l_lovrBodyGetAngularDamping },
{ "setAngularDamping", l_lovrBodySetAngularDamping },
{ "applyForce", l_lovrBodyApplyForce },
{ "applyTorque", l_lovrBodyApplyForce },
{ NULL, NULL }
};

View File

@ -160,3 +160,15 @@ void lovrBodySetAngularDamping(Body* body, float damping, float threshold) {
dBodySetAngularDamping(body->id, damping);
dBodySetAngularDampingThreshold(body->id, threshold);
}
void lovrBodyApplyForce(Body* body, float x, float y, float z) {
dBodyAddForce(body->id, x, y, z);
}
void lovrBodyApplyForceAtPosition(Body* body, float x, float y, float z, float cx, float cy, float cz) {
dBodyAddForceAtPos(body->id, x, y, z, cx, cy, cz);
}
void lovrBodyApplyTorque(Body* body, float x, float y, float z) {
dBodyAddTorque(body->id, x, y, z);
}

View File

@ -41,3 +41,6 @@ void lovrBodyGetLinearDamping(Body* body, float* damping, float* threshold);
void lovrBodySetLinearDamping(Body* body, float damping, float threshold);
void lovrBodyGetAngularDamping(Body* body, float* damping, float* threshold);
void lovrBodySetAngularDamping(Body* body, float damping, float threshold);
void lovrBodyApplyForce(Body* body, float x, float y, float z);
void lovrBodyApplyForceAtPosition(Body* body, float x, float y, float z, float cx, float cy, float cz);
void lovrBodyApplyTorque(Body* body, float x, float y, float z);