Body:getMass; Body:setMass;

This commit is contained in:
bjorn 2017-05-16 18:41:47 -06:00
parent e18f3e3f9d
commit e8686ffaea
3 changed files with 30 additions and 0 deletions

View File

@ -287,6 +287,19 @@ int l_lovrBodyGetWorld(lua_State* L) {
return 1;
}
int l_lovrBodyGetMass(lua_State* L) {
Body* body = luax_checktype(L, 1, Body);
lua_pushnumber(L, lovrBodyGetMass(body));
return 1;
}
int l_lovrBodySetMass(lua_State* L) {
Body* body = luax_checktype(L, 1, Body);
float mass = luaL_checknumber(L, 2);
lovrBodySetMass(body, mass);
return 0;
}
const luaL_Reg lovrBody[] = {
{ "getPosition", l_lovrBodyGetPosition },
{ "setPosition", l_lovrBodySetPosition },
@ -317,5 +330,7 @@ const luaL_Reg lovrBody[] = {
{ "getUserData", l_lovrBodyGetUserData },
{ "setUserData", l_lovrBodySetUserData },
{ "getWorld", l_lovrBodyGetWorld },
{ "getMass", l_lovrBodyGetMass },
{ "setMass", l_lovrBodySetMass },
{ NULL, NULL }
};

View File

@ -264,6 +264,19 @@ World* lovrBodyGetWorld(Body* body) {
return body->world;
}
float lovrBodyGetMass(Body* body) {
dMass m;
dBodyGetMass(body->id, &m);
return m.mass;
}
void lovrBodySetMass(Body* body, float mass) {
dMass m;
dBodyGetMass(body->id, &m);
dMassAdjust(&m, mass);
dBodySetMass(body->id, &m);
}
void lovrShapeDestroy(const Ref* ref) {
Shape* shape = containerof(ref, Shape);
dGeomDestroy(shape->id);

View File

@ -79,6 +79,8 @@ void lovrBodySetAwake(Body* body, int awake);
void* lovrBodyGetUserData(Body* body);
void lovrBodySetUserData(Body* body, void* data);
World* lovrBodyGetWorld(Body* body);
float lovrBodyGetMass(Body* body);
void lovrBodySetMass(Body* body, float mass);
void lovrShapeDestroy(const Ref* ref);
ShapeType lovrShapeGetType(Shape* shape);