mirror of https://github.com/bjornbytes/lovr.git
Collider API accepts both vec3 and number coords
This commit is contained in:
parent
add346519a
commit
f2fcc4e5c4
|
@ -323,17 +323,16 @@ static int l_lovrColliderSetAngularDamping(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderApplyForce(lua_State* L) {
|
static int l_lovrColliderApplyForce(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float x = luax_checkfloat(L, 2);
|
float force[4];
|
||||||
float y = luax_checkfloat(L, 3);
|
int index = luax_readvec3(L, 2, force, NULL);
|
||||||
float z = luax_checkfloat(L, 4);
|
|
||||||
|
|
||||||
if (lua_gettop(L) > 4) {
|
if (lua_gettop(L) >= index) {
|
||||||
float cx = luax_checkfloat(L, 5);
|
float position[4];
|
||||||
float cy = luax_checkfloat(L, 6);
|
luax_readvec3(L, index, position, NULL);
|
||||||
float cz = luax_checkfloat(L, 7);
|
lovrColliderApplyForceAtPosition(collider, force[0], force[1], force[2],
|
||||||
lovrColliderApplyForceAtPosition(collider, x, y, z, cx, cy, cz);
|
position[0], position[1], position[2]);
|
||||||
} else {
|
} else {
|
||||||
lovrColliderApplyForce(collider, x, y, z);
|
lovrColliderApplyForce(collider, force[0], force[1], force[2]);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -341,10 +340,9 @@ static int l_lovrColliderApplyForce(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderApplyTorque(lua_State* L) {
|
static int l_lovrColliderApplyTorque(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float x = luax_checkfloat(L, 2);
|
float force[4];
|
||||||
float y = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, force, NULL);
|
||||||
float z = luax_checkfloat(L, 4);
|
lovrColliderApplyTorque(collider, force[0], force[1], force[2]);
|
||||||
lovrColliderApplyTorque(collider, x, y, z);
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -360,11 +358,10 @@ static int l_lovrColliderGetLocalCenter(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderGetLocalPoint(lua_State* L) {
|
static int l_lovrColliderGetLocalPoint(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float wx = luax_checkfloat(L, 2);
|
float world[4];
|
||||||
float wy = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, world, NULL);
|
||||||
float wz = luax_checkfloat(L, 4);
|
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
lovrColliderGetLocalPoint(collider, wx, wy, wz, &x, &y, &z);
|
lovrColliderGetLocalPoint(collider, world[0], world[1], world[2], &x, &y, &z);
|
||||||
lua_pushnumber(L, x);
|
lua_pushnumber(L, x);
|
||||||
lua_pushnumber(L, y);
|
lua_pushnumber(L, y);
|
||||||
lua_pushnumber(L, z);
|
lua_pushnumber(L, z);
|
||||||
|
@ -373,11 +370,10 @@ static int l_lovrColliderGetLocalPoint(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderGetWorldPoint(lua_State* L) {
|
static int l_lovrColliderGetWorldPoint(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float x = luax_checkfloat(L, 2);
|
float local[4];
|
||||||
float y = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, local, NULL);
|
||||||
float z = luax_checkfloat(L, 4);
|
|
||||||
float wx, wy, wz;
|
float wx, wy, wz;
|
||||||
lovrColliderGetWorldPoint(collider, x, y, z, &wx, &wy, &wz);
|
lovrColliderGetWorldPoint(collider, local[0], local[1], local[2], &wx, &wy, &wz);
|
||||||
lua_pushnumber(L, wx);
|
lua_pushnumber(L, wx);
|
||||||
lua_pushnumber(L, wy);
|
lua_pushnumber(L, wy);
|
||||||
lua_pushnumber(L, wz);
|
lua_pushnumber(L, wz);
|
||||||
|
@ -386,11 +382,10 @@ static int l_lovrColliderGetWorldPoint(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderGetLocalVector(lua_State* L) {
|
static int l_lovrColliderGetLocalVector(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float wx = luax_checkfloat(L, 2);
|
float world[4];
|
||||||
float wy = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, world, NULL);
|
||||||
float wz = luax_checkfloat(L, 4);
|
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
lovrColliderGetLocalVector(collider, wx, wy, wz, &x, &y, &z);
|
lovrColliderGetLocalVector(collider, world[0], world[1], world[2], &x, &y, &z);
|
||||||
lua_pushnumber(L, x);
|
lua_pushnumber(L, x);
|
||||||
lua_pushnumber(L, y);
|
lua_pushnumber(L, y);
|
||||||
lua_pushnumber(L, z);
|
lua_pushnumber(L, z);
|
||||||
|
@ -399,11 +394,10 @@ static int l_lovrColliderGetLocalVector(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderGetWorldVector(lua_State* L) {
|
static int l_lovrColliderGetWorldVector(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float x = luax_checkfloat(L, 2);
|
float local[4];
|
||||||
float y = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, local, NULL);
|
||||||
float z = luax_checkfloat(L, 4);
|
|
||||||
float wx, wy, wz;
|
float wx, wy, wz;
|
||||||
lovrColliderGetWorldVector(collider, x, y, z, &wx, &wy, &wz);
|
lovrColliderGetWorldVector(collider, local[0], local[1], local[2], &wx, &wy, &wz);
|
||||||
lua_pushnumber(L, wx);
|
lua_pushnumber(L, wx);
|
||||||
lua_pushnumber(L, wy);
|
lua_pushnumber(L, wy);
|
||||||
lua_pushnumber(L, wz);
|
lua_pushnumber(L, wz);
|
||||||
|
@ -412,11 +406,10 @@ static int l_lovrColliderGetWorldVector(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderGetLinearVelocityFromLocalPoint(lua_State* L) {
|
static int l_lovrColliderGetLinearVelocityFromLocalPoint(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float x = luax_checkfloat(L, 2);
|
float local[4];
|
||||||
float y = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, local, NULL);
|
||||||
float z = luax_checkfloat(L, 4);
|
|
||||||
float vx, vy, vz;
|
float vx, vy, vz;
|
||||||
lovrColliderGetLinearVelocityFromLocalPoint(collider, x, y, z, &vx, &vy, &vz);
|
lovrColliderGetLinearVelocityFromLocalPoint(collider, local[0], local[1], local[2], &vx, &vy, &vz);
|
||||||
lua_pushnumber(L, vx);
|
lua_pushnumber(L, vx);
|
||||||
lua_pushnumber(L, vy);
|
lua_pushnumber(L, vy);
|
||||||
lua_pushnumber(L, vz);
|
lua_pushnumber(L, vz);
|
||||||
|
@ -425,11 +418,10 @@ static int l_lovrColliderGetLinearVelocityFromLocalPoint(lua_State* L) {
|
||||||
|
|
||||||
static int l_lovrColliderGetLinearVelocityFromWorldPoint(lua_State* L) {
|
static int l_lovrColliderGetLinearVelocityFromWorldPoint(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
float x = luax_checkfloat(L, 2);
|
float world[4];
|
||||||
float y = luax_checkfloat(L, 3);
|
luax_readvec3(L, 2, world, NULL);
|
||||||
float z = luax_checkfloat(L, 4);
|
|
||||||
float vx, vy, vz;
|
float vx, vy, vz;
|
||||||
lovrColliderGetLinearVelocityFromWorldPoint(collider, x, y, z, &vx, &vy, &vz);
|
lovrColliderGetLinearVelocityFromWorldPoint(collider, world[0], world[1], world[2], &vx, &vy, &vz);
|
||||||
lua_pushnumber(L, vx);
|
lua_pushnumber(L, vx);
|
||||||
lua_pushnumber(L, vy);
|
lua_pushnumber(L, vy);
|
||||||
lua_pushnumber(L, vz);
|
lua_pushnumber(L, vz);
|
||||||
|
|
Loading…
Reference in New Issue