From f35621eb0125a79554f5d079b63afda6f4911650 Mon Sep 17 00:00:00 2001 From: "rponom@gmail.com" Date: Fri, 9 Nov 2012 19:22:05 +0000 Subject: [PATCH] Bug in ConeTwist constraint with tight limits fixed ConeTwist constructor for one-body constraint modified --- .../ConstraintSolver/btConeTwistConstraint.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp b/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp index 45589275e..92f00dc54 100644 --- a/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp +++ b/src/BulletDynamics/ConstraintSolver/btConeTwistConstraint.cpp @@ -53,6 +53,7 @@ btConeTwistConstraint::btConeTwistConstraint(btRigidBody& rbA,const btTransform& m_useSolveConstraintObsolete(CONETWIST_USE_OBSOLETE_SOLVER) { m_rbBFrame = m_rbAFrame; + m_rbBFrame.setOrigin(btVector3(0., 0., 0.)); init(); } @@ -725,7 +726,8 @@ void btConeTwistConstraint::calcAngleInfo2(const btTransform& transA, const btTr { if(m_swingSpan1 < m_fixThresh) { // hinge around Y axis - if(!(btFuzzyZero(y))) +// if(!(btFuzzyZero(y))) + if((!(btFuzzyZero(x))) || (!(btFuzzyZero(z)))) { m_solveSwingLimit = true; if(m_swingSpan2 >= m_fixThresh) @@ -747,7 +749,8 @@ void btConeTwistConstraint::calcAngleInfo2(const btTransform& transA, const btTr } else { // hinge around Z axis - if(!btFuzzyZero(z)) +// if(!btFuzzyZero(z)) + if((!(btFuzzyZero(x))) || (!(btFuzzyZero(y)))) { m_solveSwingLimit = true; if(m_swingSpan1 >= m_fixThresh)