mirror of https://github.com/bjornbytes/lovr.git
Shapes API accepts both vec3 and number coords
This commit is contained in:
parent
2d6f7802f1
commit
e2d1b33eed
|
@ -113,10 +113,9 @@ static int l_lovrShapeGetPosition(lua_State* L) {
|
|||
|
||||
static int l_lovrShapeSetPosition(lua_State* L) {
|
||||
Shape* shape = luax_checkshape(L, 1);
|
||||
float x = luax_checkfloat(L, 2);
|
||||
float y = luax_checkfloat(L, 3);
|
||||
float z = luax_checkfloat(L, 4);
|
||||
lovrShapeSetPosition(shape, x, y, z);
|
||||
float position[4];
|
||||
luax_readvec3(L, 2, position, NULL);
|
||||
lovrShapeSetPosition(shape, position[0], position[1], position[2]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -133,11 +132,9 @@ static int l_lovrShapeGetOrientation(lua_State* L) {
|
|||
|
||||
static int l_lovrShapeSetOrientation(lua_State* L) {
|
||||
Shape* shape = luax_checkshape(L, 1);
|
||||
float angle = luax_checkfloat(L, 2);
|
||||
float x = luax_checkfloat(L, 3);
|
||||
float y = luax_checkfloat(L, 4);
|
||||
float z = luax_checkfloat(L, 5);
|
||||
lovrShapeSetOrientation(shape, angle, x, y, z);
|
||||
float orientation[4];
|
||||
luax_readquat(L, 2, orientation, NULL);
|
||||
lovrShapeSetOrientation(shape, orientation);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -218,10 +215,9 @@ static int l_lovrBoxShapeGetDimensions(lua_State* L) {
|
|||
|
||||
static int l_lovrBoxShapeSetDimensions(lua_State* L) {
|
||||
BoxShape* box = luax_checktype(L, 1, BoxShape);
|
||||
float x = luax_checkfloat(L, 2);
|
||||
float y = luax_checkfloat(L, 3);
|
||||
float z = luax_checkfloat(L, 4);
|
||||
lovrBoxShapeSetDimensions(box, x, y, z);
|
||||
float size[4];
|
||||
luax_readscale(L, 2, size, 3, NULL);
|
||||
lovrBoxShapeSetDimensions(box, size[0], size[1], size[2]);
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
#include "physics.h"
|
||||
#include "core/maf.h"
|
||||
#include "core/ref.h"
|
||||
#include "core/util.h"
|
||||
#include <stdlib.h>
|
||||
|
@ -525,8 +524,8 @@ void lovrColliderGetOrientation(Collider* collider, float* angle, float* x, floa
|
|||
quat_getAngleAxis(quaternion, angle, x, y, z);
|
||||
}
|
||||
|
||||
void lovrColliderSetOrientation(Collider* collider, float* quaternion) {
|
||||
float q[4] = { quaternion[3], quaternion[0], quaternion[1], quaternion[2] };
|
||||
void lovrColliderSetOrientation(Collider* collider, quat orientation) {
|
||||
float q[4] = { orientation[3], orientation[0], orientation[1], orientation[2] };
|
||||
dBodySetQuaternion(collider->body, q);
|
||||
}
|
||||
|
||||
|
@ -728,10 +727,8 @@ void lovrShapeGetOrientation(Shape* shape, float* angle, float* x, float* y, flo
|
|||
quat_getAngleAxis(quaternion, angle, x, y, z);
|
||||
}
|
||||
|
||||
void lovrShapeSetOrientation(Shape* shape, float angle, float x, float y, float z) {
|
||||
float quaternion[4];
|
||||
quat_fromAngleAxis(quaternion, angle, x, y, z);
|
||||
float q[4] = { quaternion[3], quaternion[0], quaternion[1], quaternion[2] };
|
||||
void lovrShapeSetOrientation(Shape* shape, quat orientation) {
|
||||
float q[4] = { orientation[3], orientation[0], orientation[1], orientation[2] };
|
||||
dGeomSetOffsetQuaternion(shape->id, q);
|
||||
}
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
#include "core/arr.h"
|
||||
#include "core/maf.h"
|
||||
#include <stdint.h>
|
||||
#include <stdbool.h>
|
||||
#include <ode/ode.h>
|
||||
|
@ -140,7 +141,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* quaternion);
|
||||
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);
|
||||
void lovrColliderGetAngularVelocity(Collider* collider, float* x, float* y, float* z);
|
||||
|
@ -174,7 +175,7 @@ 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 lovrShapeSetOrientation(Shape* shape, float angle, float x, float y, float z);
|
||||
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