diff --git a/src/modules/physics/box2d/Body.cpp b/src/modules/physics/box2d/Body.cpp index bae447523..c689099d8 100644 --- a/src/modules/physics/box2d/Body.cpp +++ b/src/modules/physics/box2d/Body.cpp @@ -365,9 +365,9 @@ namespace box2d return world; } - Fixture * Body::createFixture(Shape * shape) + Fixture * Body::createFixture(Shape * shape, float density) { - return new Fixture(this, shape); + return new Fixture(this, shape, density); } void Body::destroyFixture(Fixture * fixture) diff --git a/src/modules/physics/box2d/Body.h b/src/modules/physics/box2d/Body.h index 3898956c1..581d42d36 100644 --- a/src/modules/physics/box2d/Body.h +++ b/src/modules/physics/box2d/Body.h @@ -368,7 +368,7 @@ namespace box2d */ World * getWorld() const; - Fixture * createFixture(Shape * shape); + Fixture * createFixture(Shape * shape, float density); void destroyFixture(Fixture * fixture); private: diff --git a/src/modules/physics/box2d/Fixture.cpp b/src/modules/physics/box2d/Fixture.cpp index 47d2461a3..38b927559 100644 --- a/src/modules/physics/box2d/Fixture.cpp +++ b/src/modules/physics/box2d/Fixture.cpp @@ -34,7 +34,7 @@ namespace physics { namespace box2d { - Fixture::Fixture(Body * body, Shape * shape) + Fixture::Fixture(Body * body, Shape * shape, float density) : body(body), shape(shape), fixture(NULL) { body->retain(); @@ -44,6 +44,7 @@ namespace box2d b2FixtureDef def; def.shape = shape->shape; def.userData = (void *)data; + def.density = density; fixture = body->body->CreateFixture(&def); } diff --git a/src/modules/physics/box2d/Fixture.h b/src/modules/physics/box2d/Fixture.h index 17dc831f3..23c312676 100644 --- a/src/modules/physics/box2d/Fixture.h +++ b/src/modules/physics/box2d/Fixture.h @@ -69,7 +69,7 @@ namespace box2d /** * Creates a Fixture. **/ - Fixture(Body * body, Shape * shape); + Fixture(Body * body, Shape * shape, float density); virtual ~Fixture(); diff --git a/src/modules/physics/box2d/wrap_Body.cpp b/src/modules/physics/box2d/wrap_Body.cpp index 40fa1b463..71e0fb3cc 100644 --- a/src/modules/physics/box2d/wrap_Body.cpp +++ b/src/modules/physics/box2d/wrap_Body.cpp @@ -497,7 +497,8 @@ namespace box2d { Body * t = luax_checkbody(L, 1); Shape * s = luax_checktype(L, 2, "Shape", PHYSICS_SHAPE_T); - Fixture * f = t->createFixture(s); + float d = (float)luaL_checknumber(L, 3); + Fixture * f = t->createFixture(s, d); luax_newtype(L, "Fixture", PHYSICS_FIXTURE_T, (void*)f); return 1; }