mirror of https://github.com/bjornbytes/lovr.git
Make physics orientation getters more consistent;
This commit is contained in:
parent
62fbf7e0e3
commit
6539bc1bd2
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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]);
|
||||
|
|
Loading…
Reference in New Issue