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;
|
||||
}
|
||||
|
||||
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) {
|
||||
Collider* collider = luax_checktype(L, 1, Collider);
|
||||
int ref = (int) lovrColliderGetUserData(collider);
|
||||
|
@ -395,6 +409,7 @@ const luaL_Reg lovrCollider[] = {
|
|||
{ "getWorld", l_lovrColliderGetWorld },
|
||||
{ "addShape", l_lovrColliderAddShape },
|
||||
{ "removeShape", l_lovrColliderRemoveShape },
|
||||
{ "getShapeList", l_lovrColliderGetShapeList },
|
||||
{ "getUserData", l_lovrColliderGetUserData },
|
||||
{ "setUserData", l_lovrColliderSetUserData },
|
||||
{ "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) {
|
||||
return collider->userdata;
|
||||
}
|
||||
|
|
|
@ -69,6 +69,8 @@ void lovrColliderDestroyData(Collider* collider);
|
|||
World* lovrColliderGetWorld(Collider* collider);
|
||||
void lovrColliderAddShape(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 lovrColliderSetUserData(Collider* collider, void* data);
|
||||
int lovrColliderIsKinematic(Collider* collider);
|
||||
|
|
Loading…
Reference in New Issue