mirror of https://github.com/bjornbytes/lovr.git
Body:getLinearVelocityFromLocalPoint; Body:getLinearVelocityFromWorldPoint;
This commit is contained in:
parent
b31970d85d
commit
35bab33e54
|
@ -179,6 +179,32 @@ int l_lovrBodyGetWorldPoint(lua_State* L) {
|
|||
return 3;
|
||||
}
|
||||
|
||||
int l_lovrBodyGetLinearVelocityFromLocalPoint(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);
|
||||
float vx, vy, vz;
|
||||
lovrBodyGetLinearVelocityFromLocalPoint(body, x, y, z, &vx, &vy, &vz);
|
||||
lua_pushnumber(L, vx);
|
||||
lua_pushnumber(L, vy);
|
||||
lua_pushnumber(L, vz);
|
||||
return 3;
|
||||
}
|
||||
|
||||
int l_lovrBodyGetLinearVelocityFromWorldPoint(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);
|
||||
float vx, vy, vz;
|
||||
lovrBodyGetLinearVelocityFromWorldPoint(body, x, y, z, &vx, &vy, &vz);
|
||||
lua_pushnumber(L, vx);
|
||||
lua_pushnumber(L, vy);
|
||||
lua_pushnumber(L, vz);
|
||||
return 3;
|
||||
}
|
||||
|
||||
const luaL_Reg lovrBody[] = {
|
||||
{ "getPosition", l_lovrBodyGetPosition },
|
||||
{ "setPosition", l_lovrBodySetPosition },
|
||||
|
@ -198,5 +224,7 @@ const luaL_Reg lovrBody[] = {
|
|||
{ "setKinematic", l_lovrBodySetKinematic },
|
||||
{ "getLocalPoint", l_lovrBodyGetLocalPoint },
|
||||
{ "getWorldPoint", l_lovrBodyGetWorldPoint },
|
||||
{ "getLinearVelocityFromLocalPoint", l_lovrBodyGetLinearVelocityFromLocalPoint },
|
||||
{ "getLinearVelocityFromWorldPoint", l_lovrBodyGetLinearVelocityFromWorldPoint },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
|
|
@ -200,3 +200,19 @@ void lovrBodyGetWorldPoint(Body* body, float x, float y, float z, float* wx, flo
|
|||
*wy = world[1];
|
||||
*wz = world[2];
|
||||
}
|
||||
|
||||
void lovrBodyGetLinearVelocityFromLocalPoint(Body* body, float x, float y, float z, float* vx, float* vy, float* vz) {
|
||||
dReal velocity[3];
|
||||
dBodyGetRelPointVel(body->id, x, y, z, velocity);
|
||||
*vx = velocity[0];
|
||||
*vy = velocity[1];
|
||||
*vz = velocity[2];
|
||||
}
|
||||
|
||||
void lovrBodyGetLinearVelocityFromWorldPoint(Body* body, float wx, float wy, float wz, float* vx, float* vy, float* vz) {
|
||||
dReal velocity[3];
|
||||
dBodyGetPointVel(body->id, wx, wy, wz, velocity);
|
||||
*vx = velocity[0];
|
||||
*vy = velocity[1];
|
||||
*vz = velocity[2];
|
||||
}
|
||||
|
|
|
@ -48,3 +48,5 @@ int lovrBodyIsKinematic(Body* body);
|
|||
void lovrBodySetKinematic(Body* body, int kinematic);
|
||||
void lovrBodyGetLocalPoint(Body* body, float wx, float wy, float wz, float* x, float* y, float* z);
|
||||
void lovrBodyGetWorldPoint(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);
|
||||
|
|
Loading…
Reference in New Issue