Merge pull request #1848 from erwincoumans/master
more fixes related to islands
This commit is contained in:
@@ -478,6 +478,12 @@ struct CommonMultiBodyBase : public CommonExampleInterface
|
|||||||
if (m_pickedConstraint)
|
if (m_pickedConstraint)
|
||||||
{
|
{
|
||||||
m_dynamicsWorld->removeConstraint(m_pickedConstraint);
|
m_dynamicsWorld->removeConstraint(m_pickedConstraint);
|
||||||
|
|
||||||
|
if (m_pickedBody)
|
||||||
|
{
|
||||||
|
m_pickedBody->forceActivationState(ACTIVE_TAG);
|
||||||
|
m_pickedBody->activate(true);
|
||||||
|
}
|
||||||
delete m_pickedConstraint;
|
delete m_pickedConstraint;
|
||||||
m_pickedConstraint = 0;
|
m_pickedConstraint = 0;
|
||||||
m_pickedBody = 0;
|
m_pickedBody = 0;
|
||||||
|
|||||||
@@ -2365,7 +2365,7 @@ void PhysicsServerCommandProcessor::createEmptyDynamicsWorld()
|
|||||||
|
|
||||||
m_data->m_pairCache->setOverlapFilterCallback(m_data->m_broadphaseCollisionFilterCallback);
|
m_data->m_pairCache->setOverlapFilterCallback(m_data->m_broadphaseCollisionFilterCallback);
|
||||||
|
|
||||||
int maxProxies = 32768;
|
//int maxProxies = 32768;
|
||||||
//m_data->m_broadphase = new btSimpleBroadphase(maxProxies, m_data->m_pairCache);
|
//m_data->m_broadphase = new btSimpleBroadphase(maxProxies, m_data->m_pairCache);
|
||||||
btDbvtBroadphase* bv = new btDbvtBroadphase(m_data->m_pairCache);
|
btDbvtBroadphase* bv = new btDbvtBroadphase(m_data->m_pairCache);
|
||||||
bv->setVelocityPrediction(0);
|
bv->setVelocityPrediction(0);
|
||||||
|
|||||||
@@ -455,8 +455,6 @@ void btMultiBodyDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo)
|
|||||||
m_solverMultiBodyIslandCallback->setup(&solverInfo,constraintsPtr,m_sortedConstraints.size(),sortedMultiBodyConstraints,m_sortedMultiBodyConstraints.size(), getDebugDrawer());
|
m_solverMultiBodyIslandCallback->setup(&solverInfo,constraintsPtr,m_sortedConstraints.size(),sortedMultiBodyConstraints,m_sortedMultiBodyConstraints.size(), getDebugDrawer());
|
||||||
m_constraintSolver->prepareSolve(getCollisionWorld()->getNumCollisionObjects(), getCollisionWorld()->getDispatcher()->getNumManifolds());
|
m_constraintSolver->prepareSolve(getCollisionWorld()->getNumCollisionObjects(), getCollisionWorld()->getDispatcher()->getNumManifolds());
|
||||||
|
|
||||||
/// solve all the constraints for this island
|
|
||||||
m_islandManager->buildAndProcessIslands(getCollisionWorld()->getDispatcher(),getCollisionWorld(),m_solverMultiBodyIslandCallback);
|
|
||||||
|
|
||||||
#ifndef BT_USE_VIRTUAL_CLEARFORCES_AND_GRAVITY
|
#ifndef BT_USE_VIRTUAL_CLEARFORCES_AND_GRAVITY
|
||||||
{
|
{
|
||||||
@@ -691,7 +689,9 @@ void btMultiBodyDynamicsWorld::solveConstraints(btContactSolverInfo& solverInfo)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// solve all the constraints for this island
|
||||||
|
m_islandManager->buildAndProcessIslands(getCollisionWorld()->getDispatcher(), getCollisionWorld(), m_solverMultiBodyIslandCallback);
|
||||||
|
|
||||||
|
|
||||||
m_solverMultiBodyIslandCallback->processConstraints();
|
m_solverMultiBodyIslandCallback->processConstraints();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user