From a4b0d004a160fedb701312301b25bc63edc1f350 Mon Sep 17 00:00:00 2001 From: Josip Miskovic Date: Sun, 26 Apr 2020 11:16:14 +0300 Subject: [PATCH] Fix collider setOrientation() and setPose() The conversion from angle,ax,ay,az to quaternion is already done in physics module. --- src/api/l_physics_collider.c | 4 ++-- src/modules/physics/physics.c | 4 +--- src/modules/physics/physics.h | 2 +- 3 files changed, 4 insertions(+), 6 deletions(-) diff --git a/src/api/l_physics_collider.c b/src/api/l_physics_collider.c index f349109f..beefa526 100644 --- a/src/api/l_physics_collider.c +++ b/src/api/l_physics_collider.c @@ -222,7 +222,7 @@ static int l_lovrColliderSetOrientation(lua_State* L) { Collider* collider = luax_checktype(L, 1, Collider); float orientation[4]; luax_readquat(L, 2, orientation, NULL); - lovrColliderSetOrientation(collider, orientation[0], orientation[1], orientation[2], orientation[3]); + lovrColliderSetOrientation(collider, orientation); return 0; } @@ -247,7 +247,7 @@ static int l_lovrColliderSetPose(lua_State* L) { int index = luax_readvec3(L, 2, position, NULL); luax_readquat(L, index, orientation, NULL); lovrColliderSetPosition(collider, position[0], position[1], position[2]); - lovrColliderSetOrientation(collider, orientation[0], orientation[1], orientation[2], orientation[3]); + lovrColliderSetOrientation(collider, orientation); return 0; } diff --git a/src/modules/physics/physics.c b/src/modules/physics/physics.c index 75e2aa8e..374a0513 100644 --- a/src/modules/physics/physics.c +++ b/src/modules/physics/physics.c @@ -517,9 +517,7 @@ void lovrColliderGetOrientation(Collider* collider, float* angle, float* x, floa quat_getAngleAxis(quaternion, angle, x, y, z); } -void lovrColliderSetOrientation(Collider* collider, float angle, float x, float y, float z) { - float quaternion[4]; - quat_fromAngleAxis(quaternion, angle, x, y, z); +void lovrColliderSetOrientation(Collider* collider, float* quaternion) { float q[4] = { quaternion[3], quaternion[0], quaternion[1], quaternion[2] }; dBodySetQuaternion(collider->body, q); } diff --git a/src/modules/physics/physics.h b/src/modules/physics/physics.h index 4ae5350b..20f77080 100644 --- a/src/modules/physics/physics.h +++ b/src/modules/physics/physics.h @@ -139,7 +139,7 @@ void lovrColliderSetMassData(Collider* collider, float cx, float cy, float cz, f 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 lovrColliderSetOrientation(Collider* collider, float angle, float x, float y, float z); +void lovrColliderSetOrientation(Collider* collider, float* quaternion); void lovrColliderGetLinearVelocity(Collider* collider, float* x, float* y, float* z); void lovrColliderSetLinearVelocity(Collider* collider, float x, float y, float z); void lovrColliderGetAngularVelocity(Collider* collider, float* x, float* y, float* z);