mirror of https://github.com/bjornbytes/lovr.git
World:getColliders;
This commit is contained in:
parent
95635b4b02
commit
dab0be7055
|
@ -110,6 +110,27 @@ static int l_lovrWorldNewSphereCollider(lua_State* L) {
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static int l_lovrWorldGetColliders(lua_State* L) {
|
||||||
|
World* world = luax_checktype(L, 1, World);
|
||||||
|
|
||||||
|
if (lua_istable(L, 2)) {
|
||||||
|
lua_settop(L, 2);
|
||||||
|
} else {
|
||||||
|
lua_newtable(L);
|
||||||
|
}
|
||||||
|
|
||||||
|
Collider* collider = lovrWorldGetFirstCollider(world);
|
||||||
|
int index = 1;
|
||||||
|
|
||||||
|
while (collider) {
|
||||||
|
luax_pushtype(L, Collider, collider);
|
||||||
|
lua_rawseti(L, -2, index++);
|
||||||
|
collider = collider->next;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
static int l_lovrWorldDestroy(lua_State* L) {
|
static int l_lovrWorldDestroy(lua_State* L) {
|
||||||
World* world = luax_checktype(L, 1, World);
|
World* world = luax_checktype(L, 1, World);
|
||||||
lovrWorldDestroyData(world);
|
lovrWorldDestroyData(world);
|
||||||
|
@ -255,6 +276,7 @@ const luaL_Reg lovrWorld[] = {
|
||||||
{ "newCapsuleCollider", l_lovrWorldNewCapsuleCollider },
|
{ "newCapsuleCollider", l_lovrWorldNewCapsuleCollider },
|
||||||
{ "newCylinderCollider", l_lovrWorldNewCylinderCollider },
|
{ "newCylinderCollider", l_lovrWorldNewCylinderCollider },
|
||||||
{ "newSphereCollider", l_lovrWorldNewSphereCollider },
|
{ "newSphereCollider", l_lovrWorldNewSphereCollider },
|
||||||
|
{ "getColliders", l_lovrWorldGetColliders },
|
||||||
{ "destroy", l_lovrWorldDestroy },
|
{ "destroy", l_lovrWorldDestroy },
|
||||||
{ "update", l_lovrWorldUpdate },
|
{ "update", l_lovrWorldUpdate },
|
||||||
{ "computeOverlaps", l_lovrWorldComputeOverlaps },
|
{ "computeOverlaps", l_lovrWorldComputeOverlaps },
|
||||||
|
|
|
@ -179,6 +179,10 @@ int lovrWorldCollide(World* world, Shape* a, Shape* b, float friction, float res
|
||||||
return contactCount;
|
return contactCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Collider* lovrWorldGetFirstCollider(World* world) {
|
||||||
|
return world->head;
|
||||||
|
}
|
||||||
|
|
||||||
void lovrWorldGetGravity(World* world, float* x, float* y, float* z) {
|
void lovrWorldGetGravity(World* world, float* x, float* y, float* z) {
|
||||||
dReal gravity[3];
|
dReal gravity[3];
|
||||||
dWorldGetGravity(world->id, gravity);
|
dWorldGetGravity(world->id, gravity);
|
||||||
|
|
|
@ -94,6 +94,7 @@ void lovrWorldUpdate(World* world, float dt, CollisionResolver resolver, void* u
|
||||||
void lovrWorldComputeOverlaps(World* world);
|
void lovrWorldComputeOverlaps(World* world);
|
||||||
int lovrWorldGetNextOverlap(World* world, Shape** a, Shape** b);
|
int lovrWorldGetNextOverlap(World* world, Shape** a, Shape** b);
|
||||||
int lovrWorldCollide(World* world, Shape* a, Shape* b, float friction, float restitution);
|
int lovrWorldCollide(World* world, Shape* a, Shape* b, float friction, float restitution);
|
||||||
|
Collider* lovrWorldGetFirstCollider(World* world);
|
||||||
void lovrWorldGetGravity(World* world, float* x, float* y, float* z);
|
void lovrWorldGetGravity(World* world, float* x, float* y, float* z);
|
||||||
void lovrWorldSetGravity(World* world, float x, float y, float z);
|
void lovrWorldSetGravity(World* world, float x, float y, float z);
|
||||||
void lovrWorldGetLinearDamping(World* world, float* damping, float* threshold);
|
void lovrWorldGetLinearDamping(World* world, float* damping, float* threshold);
|
||||||
|
|
Loading…
Reference in New Issue