Make physics orientation getters more consistent;

This commit is contained in:
bjorn 2020-05-10 02:08:36 -06:00
parent 62fbf7e0e3
commit 6539bc1bd2
4 changed files with 15 additions and 14 deletions

View File

@ -209,8 +209,9 @@ static int l_lovrColliderSetPosition(lua_State* L) {
static int l_lovrColliderGetOrientation(lua_State* L) {
Collider* collider = luax_checktype(L, 1, Collider);
float angle, x, y, z;
lovrColliderGetOrientation(collider, &angle, &x, &y, &z);
float angle, x, y, z, orientation[4];
lovrColliderGetOrientation(collider, orientation);
quat_getAngleAxis(orientation, &angle, &x, &y, &z);
lua_pushnumber(L, angle);
lua_pushnumber(L, x);
lua_pushnumber(L, y);
@ -228,9 +229,10 @@ static int l_lovrColliderSetOrientation(lua_State* L) {
static int l_lovrColliderGetPose(lua_State* L) {
Collider* collider = luax_checktype(L, 1, Collider);
float x, y, z, angle, ax, ay, az;
float x, y, z, angle, ax, ay, az, orientation[4];
lovrColliderGetPosition(collider, &x, &y, &z);
lovrColliderGetOrientation(collider, &angle, &ax, &ay, &az);
lovrColliderGetOrientation(collider, orientation);
quat_getAngleAxis(orientation, &angle, &ax, &ay, &az);
lua_pushnumber(L, x);
lua_pushnumber(L, y);
lua_pushnumber(L, z);

View File

@ -121,8 +121,9 @@ static int l_lovrShapeSetPosition(lua_State* L) {
static int l_lovrShapeGetOrientation(lua_State* L) {
Shape* shape = luax_checkshape(L, 1);
float angle, x, y, z;
lovrShapeGetOrientation(shape, &angle, &x, &y, &z);
float angle, x, y, z, orientation[4];
lovrShapeGetOrientation(shape, orientation);
quat_getAngleAxis(orientation, &angle, &x, &y, &z);
lua_pushnumber(L, angle);
lua_pushnumber(L, x);
lua_pushnumber(L, y);

View File

@ -518,10 +518,9 @@ void lovrColliderSetPosition(Collider* collider, float x, float y, float z) {
dBodySetPosition(collider->body, x, y, z);
}
void lovrColliderGetOrientation(Collider* collider, float* angle, float* x, float* y, float* z) {
void lovrColliderGetOrientation(Collider* collider, quat orientation) {
const dReal* q = dBodyGetQuaternion(collider->body);
float quaternion[4] = { q[1], q[2], q[3], q[0] };
quat_getAngleAxis(quaternion, angle, x, y, z);
quat_set(orientation, q[1], q[2], q[3], q[0]);
}
void lovrColliderSetOrientation(Collider* collider, quat orientation) {
@ -720,11 +719,10 @@ void lovrShapeSetPosition(Shape* shape, float x, float y, float z) {
dGeomSetOffsetPosition(shape->id, x, y, z);
}
void lovrShapeGetOrientation(Shape* shape, float* angle, float* x, float* y, float* z) {
void lovrShapeGetOrientation(Shape* shape, quat orientation) {
dReal q[4];
dGeomGetOffsetQuaternion(shape->id, q);
float quaternion[4] = { q[1], q[2], q[3], q[0] };
quat_getAngleAxis(quaternion, angle, x, y, z);
quat_set(orientation, q[1], q[2], q[3], q[0]);
}
void lovrShapeSetOrientation(Shape* shape, quat orientation) {

View File

@ -140,7 +140,7 @@ void lovrColliderGetMassData(Collider* collider, float* cx, float* cy, float* cz
void lovrColliderSetMassData(Collider* collider, float cx, float cy, float cz, float mass, float inertia[6]);
void lovrColliderGetPosition(Collider* collider, float* x, float* y, float* z);
void lovrColliderSetPosition(Collider* collider, float x, float y, float z);
void lovrColliderGetOrientation(Collider* collider, float* angle, float* x, float* y, float* z);
void lovrColliderGetOrientation(Collider* collider, quat orientation);
void lovrColliderSetOrientation(Collider* collider, quat orientation);
void lovrColliderGetLinearVelocity(Collider* collider, float* x, float* y, float* z);
void lovrColliderSetLinearVelocity(Collider* collider, float x, float y, float z);
@ -174,7 +174,7 @@ void* lovrShapeGetUserData(Shape* shape);
void lovrShapeSetUserData(Shape* shape, void* data);
void lovrShapeGetPosition(Shape* shape, float* x, float* y, float* z);
void lovrShapeSetPosition(Shape* shape, float x, float y, float z);
void lovrShapeGetOrientation(Shape* shape, float* angle, float* x, float* y, float* z);
void lovrShapeGetOrientation(Shape* shape, quat orientation);
void lovrShapeSetOrientation(Shape* shape, quat orientation);
void lovrShapeGetMass(Shape* shape, float density, float* cx, float* cy, float* cz, float* mass, float inertia[6]);
void lovrShapeGetAABB(Shape* shape, float aabb[6]);