Body:getLinearVelocity; Body:setLinearVelocity;

This commit is contained in:
bjorn 2017-05-15 23:11:50 -06:00
parent 798b09eb0d
commit 891db00bc9
3 changed files with 34 additions and 0 deletions

View File

@ -41,10 +41,31 @@ int l_lovrBodySetOrientation(lua_State* L) {
return 0;
}
int l_lovrBodyGetLinearVelocity(lua_State* L) {
Body* body = luax_checktype(L, 1, Body);
float x, y, z;
lovrBodyGetLinearVelocity(body, &x, &y, &z);
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_pushnumber(L, z);
return 3;
}
int l_lovrBodySetLinearVelocity(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);
lovrBodySetLinearVelocity(body, x, y, z);
return 0;
}
const luaL_Reg lovrBody[] = {
{ "getPosition", l_lovrBodyGetPosition },
{ "setPosition", l_lovrBodySetPosition },
{ "getOrientation", l_lovrBodyGetOrientation },
{ "setOrientation", l_lovrBodySetOrientation },
{ "getLinearVelocity", l_lovrBodyGetLinearVelocity },
{ "setLinearVelocity", l_lovrBodySetLinearVelocity },
{ NULL, NULL }
};

View File

@ -118,3 +118,14 @@ void lovrBodySetOrientation(Body* body, float angle, float x, float y, float z)
quat_fromAngleAxis(quaternion, angle, axis);
dBodySetQuaternion(body->id, quaternion);
}
void lovrBodyGetLinearVelocity(Body* body, float* x, float* y, float* z) {
const dReal* velocity = dBodyGetLinearVel(body->id);
*x = velocity[0];
*y = velocity[1];
*z = velocity[2];
}
void lovrBodySetLinearVelocity(Body* body, float x, float y, float z) {
dBodySetLinearVel(body->id, x, y, z);
}

View File

@ -33,3 +33,5 @@ void lovrBodyGetPosition(Body* body, float* x, float* y, float* z);
void lovrBodySetPosition(Body* body, float x, float y, float z);
void lovrBodyGetOrientation(Body* body, float* angle, float* x, float* y, float* z);
void lovrBodySetOrientation(Body* body, float angle, float x, float y, float z);
void lovrBodyGetLinearVelocity(Body* body, float* x, float* y, float* z);
void lovrBodySetLinearVelocity(Body* body, float x, float y, float z);