mirror of https://github.com/bjornbytes/lovr.git
Collider:getWorldCenter; Jolt center of mass;
This commit is contained in:
parent
e4895a7f1e
commit
eaf6805fc6
|
@ -439,6 +439,16 @@ static int l_lovrColliderGetLocalCenter(lua_State* L) {
|
|||
return 3;
|
||||
}
|
||||
|
||||
static int l_lovrColliderGetWorldCenter(lua_State* L) {
|
||||
Collider* collider = luax_checktype(L, 1, Collider);
|
||||
float center[3];
|
||||
lovrColliderGetWorldCenter(collider, center);
|
||||
lua_pushnumber(L, center[0]);
|
||||
lua_pushnumber(L, center[1]);
|
||||
lua_pushnumber(L, center[2]);
|
||||
return 3;
|
||||
}
|
||||
|
||||
static int l_lovrColliderGetLocalPoint(lua_State* L) {
|
||||
Collider* collider = luax_checktype(L, 1, Collider);
|
||||
float world[3], local[3];
|
||||
|
@ -635,6 +645,7 @@ const luaL_Reg lovrCollider[] = {
|
|||
{ "applyLinearImpulse", l_lovrColliderApplyLinearImpulse },
|
||||
{ "applyAngularImpulse", l_lovrColliderApplyAngularImpulse },
|
||||
{ "getLocalCenter", l_lovrColliderGetLocalCenter },
|
||||
{ "getWorldCenter", l_lovrColliderGetWorldCenter },
|
||||
{ "getLocalPoint", l_lovrColliderGetLocalPoint },
|
||||
{ "getWorldPoint", l_lovrColliderGetWorldPoint },
|
||||
{ "getLocalVector", l_lovrColliderGetLocalVector },
|
||||
|
|
|
@ -132,6 +132,7 @@ void lovrColliderApplyLinearImpulse(Collider* collider, float impulse[3]);
|
|||
void lovrColliderApplyLinearImpulseAtPosition(Collider* collider, float impulse[3], float position[3]);
|
||||
void lovrColliderApplyAngularImpulse(Collider* collider, float impulse[3]);
|
||||
void lovrColliderGetLocalCenter(Collider* collider, float center[3]);
|
||||
void lovrColliderGetWorldCenter(Collider* collider, float center[3]);
|
||||
void lovrColliderGetLocalPoint(Collider* collider, float world[3], float local[3]);
|
||||
void lovrColliderGetWorldPoint(Collider* collider, float local[3], float world[3]);
|
||||
void lovrColliderGetLocalVector(Collider* collider, float world[3], float local[3]);
|
||||
|
|
|
@ -711,8 +711,15 @@ void lovrColliderApplyAngularImpulse(Collider* collider, float impulse[3]) {
|
|||
}
|
||||
|
||||
void lovrColliderGetLocalCenter(Collider* collider, float center[3]) {
|
||||
// todo: applicable for CompoundShape and OffsetCenterOfMassShape
|
||||
vec3_set(center, 0.f, 0.f, 0.f);
|
||||
JPH_Vec3 v;
|
||||
JPH_Shape_GetCenterOfMass(JPH_BodyInterface_GetShape(collider->world->bodies, collider->id), &v);
|
||||
vec3_fromJolt(center, &v);
|
||||
}
|
||||
|
||||
void lovrColliderGetWorldCenter(Collider* collider, float center[3]) {
|
||||
JPH_RVec3 v;
|
||||
JPH_Body_GetCenterOfMassPosition(collider->body, &v);
|
||||
vec3_fromJolt(center, &v);
|
||||
}
|
||||
|
||||
void lovrColliderGetLocalPoint(Collider* collider, float world[3], float local[3]) {
|
||||
|
|
|
@ -762,6 +762,10 @@ void lovrColliderGetLocalCenter(Collider* collider, float center[3]) {
|
|||
vec3_set(center, m.c[0], m.c[1], m.c[2]);
|
||||
}
|
||||
|
||||
void lovrColliderGetWorldCenter(Collider* collider, float center[3]) {
|
||||
//
|
||||
}
|
||||
|
||||
void lovrColliderGetLocalPoint(Collider* collider, float world[3], float local[3]) {
|
||||
dReal point[4];
|
||||
dBodyGetPosRelPoint(collider->body, world[0], world[1], world[2], point);
|
||||
|
|
Loading…
Reference in New Issue