From 02e5f2dd8e6f2cf8647a9f7dcb305a402e2e41ad Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Thu, 8 Mar 2007 01:59:04 +0000 Subject: [PATCH] void btDiscreteDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo) sortedConstraints.heapSort(btAlignedObjectArray::less()); should be sortedConstraints.heapSort(btSortConstraintOnIslandPredicate); Thanks Clemens Unterkofler for pointing this out! --- .../Dynamics/btDiscreteDynamicsWorld.cpp | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp index 792912d96..3cec7d753 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp @@ -401,13 +401,21 @@ inline int btGetConstraintIslandId(const btTypedConstraint* lhs) } -static bool btSortConstraintOnIslandPredicate(const btTypedConstraint* lhs, const btTypedConstraint* rhs) + +class btSortConstraintOnIslandPredicate { - int rIslandId0,lIslandId0; - rIslandId0 = btGetConstraintIslandId(rhs); - lIslandId0 = btGetConstraintIslandId(lhs); - return lIslandId0 < rIslandId0; -} + public: + + bool operator() ( const btTypedConstraint* lhs, const btTypedConstraint* rhs ) + { + int rIslandId0,lIslandId0; + rIslandId0 = btGetConstraintIslandId(rhs); + lIslandId0 = btGetConstraintIslandId(lhs); + return lIslandId0 < rIslandId0; + } +}; + + void btDiscreteDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo) @@ -485,9 +493,7 @@ void btDiscreteDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo) - sortedConstraints.heapSort(btAlignedObjectArray::less()); - //std::sort(sortedConstraints.begin(),sortedConstraints.end(),btSortConstraintOnIslandPredicate); - + sortedConstraints.heapSort(btSortConstraintOnIslandPredicate()); btTypedConstraint** constraintsPtr = getNumConstraints() ? &sortedConstraints[0] : 0;