Browse Source

Added an optional 'collideconnected' boolean argument to love.physics.newMotorJoint (resolves issue #1130).

Alex Szpakowski 9 years ago
parent
commit
ab4cfb4a35

+ 2 - 1
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);
 }

+ 1 - 1
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.

+ 2 - 2
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);
 }
 
 

+ 1 - 1
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.

+ 2 - 1
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