expose choice of contraint solver in PyBullet, with switchConstraintSolver example
This commit is contained in:
@@ -277,7 +277,11 @@ struct MultiBodyInplaceSolverIslandCallback : public btSimulationIslandManager::
|
||||
m_multiBodyConstraints.resize(0);
|
||||
}
|
||||
|
||||
|
||||
void setMultiBodyConstraintSolver(btMultiBodyConstraintSolver* solver)
|
||||
{
|
||||
m_solver = solver;
|
||||
}
|
||||
|
||||
virtual void processIsland(btCollisionObject** bodies,int numBodies,btPersistentManifold** manifolds,int numManifolds, int islandId)
|
||||
{
|
||||
if (islandId<0)
|
||||
@@ -394,6 +398,22 @@ btMultiBodyDynamicsWorld::~btMultiBodyDynamicsWorld ()
|
||||
delete m_solverMultiBodyIslandCallback;
|
||||
}
|
||||
|
||||
void btMultiBodyDynamicsWorld::setMultiBodyConstraintSolver(btMultiBodyConstraintSolver* solver)
|
||||
{
|
||||
m_multiBodyConstraintSolver = solver;
|
||||
m_solverMultiBodyIslandCallback->setMultiBodyConstraintSolver(solver);
|
||||
btDiscreteDynamicsWorld::setConstraintSolver(solver);
|
||||
}
|
||||
|
||||
void btMultiBodyDynamicsWorld::setConstraintSolver(btConstraintSolver* solver)
|
||||
{
|
||||
if (solver->getSolverType()==BT_MULTIBODY_SOLVER)
|
||||
{
|
||||
m_multiBodyConstraintSolver = (btMultiBodyConstraintSolver*)solver;
|
||||
}
|
||||
btDiscreteDynamicsWorld::setConstraintSolver(solver);
|
||||
}
|
||||
|
||||
void btMultiBodyDynamicsWorld::forwardKinematics()
|
||||
{
|
||||
|
||||
@@ -1008,4 +1028,4 @@ void btMultiBodyDynamicsWorld::serializeMultiBodies(btSerializer* serializer)
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user