add support for the <interpenetrate>, which disables collisions between two bodies linked by a constraint.
This commit is contained in:
@@ -624,7 +624,8 @@ void ColladaConverter::prepareConstraints(ConstraintInput& input)
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
domBool interpenetrate = commonRef->getInterpenetrate()->getValue();
|
||||||
|
bool disableCollisionsBetweenLinkedBodies = interpenetrate;
|
||||||
//convert INF / -INF into lower > upper
|
//convert INF / -INF into lower > upper
|
||||||
|
|
||||||
//currently there is a hack in the DOM to detect INF / -INF
|
//currently there is a hack in the DOM to detect INF / -INF
|
||||||
@@ -681,7 +682,8 @@ void ColladaConverter::prepareConstraints(ConstraintInput& input)
|
|||||||
linearLowerLimits,
|
linearLowerLimits,
|
||||||
linearUpperLimits,
|
linearUpperLimits,
|
||||||
angularLowerLimits,
|
angularLowerLimits,
|
||||||
angularUpperLimits
|
angularUpperLimits,
|
||||||
|
disableCollisionsBetweenLinkedBodies
|
||||||
);
|
);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
@@ -693,7 +695,8 @@ void ColladaConverter::prepareConstraints(ConstraintInput& input)
|
|||||||
linearLowerLimits,
|
linearLowerLimits,
|
||||||
linearUpperLimits,
|
linearUpperLimits,
|
||||||
angularLowerLimits,
|
angularLowerLimits,
|
||||||
angularUpperLimits
|
angularUpperLimits,
|
||||||
|
disableCollisionsBetweenLinkedBodies
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
} else
|
} else
|
||||||
|
|||||||
@@ -75,7 +75,8 @@ public:
|
|||||||
const btVector3& linearMinLimits,
|
const btVector3& linearMinLimits,
|
||||||
const btVector3& linearMaxLimits,
|
const btVector3& linearMaxLimits,
|
||||||
const btVector3& angularMinLimits,
|
const btVector3& angularMinLimits,
|
||||||
const btVector3& angularMaxLimits
|
const btVector3& angularMaxLimits,
|
||||||
|
bool disableCollisionsBetweenLinkedBodies
|
||||||
) = 0;
|
) = 0;
|
||||||
|
|
||||||
virtual btRigidBody* createRigidBody(bool isDynamic,
|
virtual btRigidBody* createRigidBody(bool isDynamic,
|
||||||
|
|||||||
@@ -54,7 +54,8 @@ class MyColladaConverter : public ColladaConverter
|
|||||||
const btVector3& linearMinLimits,
|
const btVector3& linearMinLimits,
|
||||||
const btVector3& linearMaxLimits,
|
const btVector3& linearMaxLimits,
|
||||||
const btVector3& angularMinLimits,
|
const btVector3& angularMinLimits,
|
||||||
const btVector3& angularMaxLimits
|
const btVector3& angularMaxLimits,
|
||||||
|
bool disableCollisionsBetweenLinkedBodies
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
if (bodyRef)
|
if (bodyRef)
|
||||||
@@ -78,7 +79,7 @@ class MyColladaConverter : public ColladaConverter
|
|||||||
genericConstraint->setAngularLowerLimit(angularMinLimits);
|
genericConstraint->setAngularLowerLimit(angularMinLimits);
|
||||||
genericConstraint->setAngularUpperLimit(angularMaxLimits);
|
genericConstraint->setAngularUpperLimit(angularMaxLimits);
|
||||||
|
|
||||||
m_demoApp->getDynamicsWorld()->addConstraint( genericConstraint );
|
m_demoApp->getDynamicsWorld()->addConstraint( genericConstraint,disableCollisionsBetweenLinkedBodies );
|
||||||
|
|
||||||
return genericConstraint;
|
return genericConstraint;
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user