From b8ce13adb100980855c73578dc59771c00a9c44c Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Sat, 17 Mar 2007 08:29:05 +0000 Subject: [PATCH] bugfix, also convert rigidbody into solverbodies for constraints (without contact manifolds), and do additional check for validity --- .../btSequentialImpulseConstraintSolver.cpp | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp index 8e1382a1c..bb4b5d54a 100644 --- a/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp +++ b/src/BulletDynamics/ConstraintSolver/btSequentialImpulseConstraintSolver.cpp @@ -373,7 +373,7 @@ btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendly(btCollisio int sizeofSC = sizeof(btSolverConstraint); - if (numManifolds) + if (1) { //if m_stackAlloc, try to pack bodies/constraints to speed up solving // btBlock* sablock; @@ -674,22 +674,22 @@ btScalar btSequentialImpulseConstraintSolver::solveGroupCacheFriendly(btCollisio btTypedConstraint* constraint = constraints[j]; ///todo: use solver bodies, so we don't need to copy from/to btRigidBody - if (constraint->getRigidBodyA().getIslandTag() >= 0) + if ((constraint->getRigidBodyA().getIslandTag() >= 0) && (constraint->getRigidBodyA().getCompanionId() >= 0)) { tmpSolverBodyPool[constraint->getRigidBodyA().getCompanionId()].writebackVelocity(); } - if (constraint->getRigidBodyB().getIslandTag() >= 0) + if ((constraint->getRigidBodyB().getIslandTag() >= 0) && (constraint->getRigidBodyB().getCompanionId() >= 0)) { tmpSolverBodyPool[constraint->getRigidBodyB().getCompanionId()].writebackVelocity(); } constraint->solveConstraint(info.m_timeStep); - if (constraint->getRigidBodyA().getIslandTag() >= 0) + if ((constraint->getRigidBodyA().getIslandTag() >= 0) && (constraint->getRigidBodyA().getCompanionId() >= 0)) { tmpSolverBodyPool[constraint->getRigidBodyA().getCompanionId()].readVelocity(); } - if (constraint->getRigidBodyB().getIslandTag() >= 0) + if ((constraint->getRigidBodyB().getIslandTag() >= 0) && (constraint->getRigidBodyB().getCompanionId() >= 0)) { tmpSolverBodyPool[constraint->getRigidBodyB().getCompanionId()].readVelocity(); }