diff --git a/src/modules/physics/box2d/MotorJoint.cpp b/src/modules/physics/box2d/MotorJoint.cpp index 152502688..3902fe38b 100644 --- a/src/modules/physics/box2d/MotorJoint.cpp +++ b/src/modules/physics/box2d/MotorJoint.cpp @@ -42,7 +42,7 @@ MotorJoint::MotorJoint(Body *body1, Body *body2) joint = (b2MotorJoint *) createJoint(&def); } -MotorJoint::MotorJoint(Body *body1, Body *body2, float correctionFactor) +MotorJoint::MotorJoint(Body *body1, Body *body2, float correctionFactor, bool collideConnected) : Joint(body1, body2) , joint(NULL) { @@ -50,6 +50,7 @@ MotorJoint::MotorJoint(Body *body1, Body *body2, float correctionFactor) def.Initialize(body1->body, body2->body); def.correctionFactor = correctionFactor; + def.collideConnected = collideConnected; joint = (b2MotorJoint *) createJoint(&def); } diff --git a/src/modules/physics/box2d/MotorJoint.h b/src/modules/physics/box2d/MotorJoint.h index ac4ad65f1..69d9432ee 100644 --- a/src/modules/physics/box2d/MotorJoint.h +++ b/src/modules/physics/box2d/MotorJoint.h @@ -41,7 +41,7 @@ class MotorJoint : public Joint public: MotorJoint(Body *body1, Body* body2); - MotorJoint(Body *body1, Body* body2, float correctionFactor); + MotorJoint(Body *body1, Body* body2, float correctionFactor, bool collideConnected); virtual ~MotorJoint(); /// Set/get the target linear offset, in frame A, in meters. diff --git a/src/modules/physics/box2d/Physics.cpp b/src/modules/physics/box2d/Physics.cpp index 99c1c9125..8673c1ada 100644 --- a/src/modules/physics/box2d/Physics.cpp +++ b/src/modules/physics/box2d/Physics.cpp @@ -268,9 +268,9 @@ MotorJoint *Physics::newMotorJoint(Body *body1, Body *body2) return new MotorJoint(body1, body2); } -MotorJoint *Physics::newMotorJoint(Body *body1, Body *body2, float correctionFactor) +MotorJoint *Physics::newMotorJoint(Body *body1, Body *body2, float correctionFactor, bool collideConnected) { - return new MotorJoint(body1, body2, correctionFactor); + return new MotorJoint(body1, body2, correctionFactor, collideConnected); } diff --git a/src/modules/physics/box2d/Physics.h b/src/modules/physics/box2d/Physics.h index 92db477ae..113506379 100644 --- a/src/modules/physics/box2d/Physics.h +++ b/src/modules/physics/box2d/Physics.h @@ -257,7 +257,7 @@ public: * and body2. **/ MotorJoint *newMotorJoint(Body *body1, Body *body2); - MotorJoint *newMotorJoint(Body *body1, Body *body2, float correctionFactor); + MotorJoint *newMotorJoint(Body *body1, Body *body2, float correctionFactor, bool collideConnected); /** * Creates a new Fixture attaching shape to body. diff --git a/src/modules/physics/box2d/wrap_Physics.cpp b/src/modules/physics/box2d/wrap_Physics.cpp index 18fc49eeb..ef6327c67 100644 --- a/src/modules/physics/box2d/wrap_Physics.cpp +++ b/src/modules/physics/box2d/wrap_Physics.cpp @@ -419,8 +419,9 @@ int w_newMotorJoint(lua_State *L) if (!lua_isnoneornil(L, 3)) { float correctionFactor = (float)luaL_checknumber(L, 3); + bool collideConnected = luax_optboolean(L, 4, false); luax_catchexcept(L, [&]() { - j = instance()->newMotorJoint(body1, body2, correctionFactor); + j = instance()->newMotorJoint(body1, body2, correctionFactor, collideConnected); }); } else