mirror of https://github.com/bjornbytes/lovr.git
Collider:getShapeList;
This commit is contained in:
parent
0fb1bd77d8
commit
f3a4ce3931
|
@ -27,6 +27,20 @@ int l_lovrColliderRemoveShape(lua_State* L) {
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int l_lovrColliderGetShapeList(lua_State* L) {
|
||||||
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
|
lua_newtable(L);
|
||||||
|
int i;
|
||||||
|
Shape* shape;
|
||||||
|
|
||||||
|
for (i = 1, shape = lovrColliderGetFirstShape(collider); shape; shape = lovrColliderGetNextShape(collider, shape), i++) {
|
||||||
|
luax_pushshape(L, shape);
|
||||||
|
lua_rawseti(L, -2, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
int l_lovrColliderGetUserData(lua_State* L) {
|
int l_lovrColliderGetUserData(lua_State* L) {
|
||||||
Collider* collider = luax_checktype(L, 1, Collider);
|
Collider* collider = luax_checktype(L, 1, Collider);
|
||||||
int ref = (int) lovrColliderGetUserData(collider);
|
int ref = (int) lovrColliderGetUserData(collider);
|
||||||
|
@ -395,6 +409,7 @@ const luaL_Reg lovrCollider[] = {
|
||||||
{ "getWorld", l_lovrColliderGetWorld },
|
{ "getWorld", l_lovrColliderGetWorld },
|
||||||
{ "addShape", l_lovrColliderAddShape },
|
{ "addShape", l_lovrColliderAddShape },
|
||||||
{ "removeShape", l_lovrColliderRemoveShape },
|
{ "removeShape", l_lovrColliderRemoveShape },
|
||||||
|
{ "getShapeList", l_lovrColliderGetShapeList },
|
||||||
{ "getUserData", l_lovrColliderGetUserData },
|
{ "getUserData", l_lovrColliderGetUserData },
|
||||||
{ "setUserData", l_lovrColliderSetUserData },
|
{ "setUserData", l_lovrColliderSetUserData },
|
||||||
{ "isKinematic", l_lovrColliderIsKinematic },
|
{ "isKinematic", l_lovrColliderIsKinematic },
|
||||||
|
|
|
@ -205,6 +205,16 @@ void lovrColliderRemoveShape(Collider* collider, Shape* shape) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Shape* lovrColliderGetFirstShape(Collider* collider) {
|
||||||
|
dGeomID geom = dBodyGetFirstGeom(collider->body);
|
||||||
|
return geom ? dGeomGetData(geom) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
Shape* lovrColliderGetNextShape(Collider* collider, Shape* shape) {
|
||||||
|
dGeomID geom = dBodyGetNextGeom(shape->id);
|
||||||
|
return geom ? dGeomGetData(geom) : NULL;
|
||||||
|
}
|
||||||
|
|
||||||
void* lovrColliderGetUserData(Collider* collider) {
|
void* lovrColliderGetUserData(Collider* collider) {
|
||||||
return collider->userdata;
|
return collider->userdata;
|
||||||
}
|
}
|
||||||
|
|
|
@ -69,6 +69,8 @@ void lovrColliderDestroyData(Collider* collider);
|
||||||
World* lovrColliderGetWorld(Collider* collider);
|
World* lovrColliderGetWorld(Collider* collider);
|
||||||
void lovrColliderAddShape(Collider* collider, Shape* shape);
|
void lovrColliderAddShape(Collider* collider, Shape* shape);
|
||||||
void lovrColliderRemoveShape(Collider* collider, Shape* shape);
|
void lovrColliderRemoveShape(Collider* collider, Shape* shape);
|
||||||
|
Shape* lovrColliderGetFirstShape(Collider* collider);
|
||||||
|
Shape* lovrColliderGetNextShape(Collider* collider, Shape* shape);
|
||||||
void* lovrColliderGetUserData(Collider* collider);
|
void* lovrColliderGetUserData(Collider* collider);
|
||||||
void lovrColliderSetUserData(Collider* collider, void* data);
|
void lovrColliderSetUserData(Collider* collider, void* data);
|
||||||
int lovrColliderIsKinematic(Collider* collider);
|
int lovrColliderIsKinematic(Collider* collider);
|
||||||
|
|
Loading…
Reference in New Issue