forked from bartvdbraak/blender
82d3d9f2ba
Remove Jamfiles and other unused files that stuck around during previous updates. Add patches for local changes to the patches directory. Update readme.txt, it had outdated infromation.
43 lines
2.0 KiB
Diff
43 lines
2.0 KiB
Diff
Index: extern/bullet2/src/BulletSoftBody/btSoftBody.cpp
|
|
===================================================================
|
|
--- extern/bullet2/src/BulletSoftBody/btSoftBody.cpp (Revision 43904)
|
|
+++ extern/bullet2/src/BulletSoftBody/btSoftBody.cpp (Revision 43905)
|
|
@@ -2780,21 +2780,23 @@
|
|
{
|
|
const RContact& c = psb->m_rcontacts[i];
|
|
const sCti& cti = c.m_cti;
|
|
- btRigidBody* tmpRigid = btRigidBody::upcast(cti.m_colObj);
|
|
|
|
- const btVector3 va = tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0);
|
|
- const btVector3 vb = c.m_node->m_x-c.m_node->m_q;
|
|
- const btVector3 vr = vb-va;
|
|
- const btScalar dn = btDot(vr, cti.m_normal);
|
|
- if(dn<=SIMD_EPSILON)
|
|
- {
|
|
- const btScalar dp = btMin( (btDot(c.m_node->m_x, cti.m_normal) + cti.m_offset), mrg );
|
|
- const btVector3 fv = vr - (cti.m_normal * dn);
|
|
- // c0 is the impulse matrix, c3 is 1 - the friction coefficient or 0, c4 is the contact hardness coefficient
|
|
- const btVector3 impulse = c.m_c0 * ( (vr - (fv * c.m_c3) + (cti.m_normal * (dp * c.m_c4))) * kst );
|
|
- c.m_node->m_x -= impulse * c.m_c2;
|
|
- if (tmpRigid)
|
|
- tmpRigid->applyImpulse(impulse,c.m_c1);
|
|
+ if (cti.m_colObj->hasContactResponse()) {
|
|
+ btRigidBody* tmpRigid = btRigidBody::upcast(cti.m_colObj);
|
|
+ const btVector3 va = tmpRigid ? tmpRigid->getVelocityInLocalPoint(c.m_c1)*dt : btVector3(0,0,0);
|
|
+ const btVector3 vb = c.m_node->m_x-c.m_node->m_q;
|
|
+ const btVector3 vr = vb-va;
|
|
+ const btScalar dn = btDot(vr, cti.m_normal);
|
|
+ if(dn<=SIMD_EPSILON)
|
|
+ {
|
|
+ const btScalar dp = btMin( (btDot(c.m_node->m_x, cti.m_normal) + cti.m_offset), mrg );
|
|
+ const btVector3 fv = vr - (cti.m_normal * dn);
|
|
+ // c0 is the impulse matrix, c3 is 1 - the friction coefficient or 0, c4 is the contact hardness coefficient
|
|
+ const btVector3 impulse = c.m_c0 * ( (vr - (fv * c.m_c3) + (cti.m_normal * (dp * c.m_c4))) * kst );
|
|
+ c.m_node->m_x -= impulse * c.m_c2;
|
|
+ if (tmpRigid)
|
|
+ tmpRigid->applyImpulse(impulse,c.m_c1);
|
|
+ }
|
|
}
|
|
}
|
|
}
|