btDbvtVolume needs to be 16-byte aligned, otherwise SIMD version crashes.

This commit is contained in:
erwin.coumans
2008-09-11 20:20:31 +00:00
parent bc8ff765b4
commit 350e2e0393
3 changed files with 5 additions and 4 deletions

View File

@@ -183,7 +183,7 @@ void btCompoundCollisionAlgorithm::processCollision (btCollisionObject* body0,bt
otherInCompoundSpace = colObj->getWorldTransform().inverse() * otherObj->getWorldTransform();
otherObj->getCollisionShape()->getAabb(otherInCompoundSpace,localAabbMin,localAabbMax);
const btDbvtVolume bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax);
const ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(localAabbMin,localAabbMax);
//process all children, that overlap with the given AABB bounds
tree->collideTV(tree->m_root,bounds,callback);

View File

@@ -2002,7 +2002,7 @@ for(i=0;i<m_clusters.size();++i)
mi.setMin(c.m_nodes[j]->m_x);
mx.setMax(c.m_nodes[j]->m_x);
}
const btDbvtVolume bounds=btDbvtVolume::FromMM(mi,mx);
const ATTRIBUTE_ALIGNED16(btDbvtVolume) bounds=btDbvtVolume::FromMM(mi,mx);
if(c.m_leaf)
m_cdbvt.update(c.m_leaf,bounds,c.m_lv*m_sst.sdt*3,m_sst.radmrg);
else
@@ -2532,7 +2532,7 @@ switch(m_cfg.collisions&fCollision::RVSmask)
const btScalar basemargin=getCollisionShape()->getMargin();
btVector3 mins;
btVector3 maxs;
btDbvtVolume volume;
ATTRIBUTE_ALIGNED16(btDbvtVolume) volume;
pco->getCollisionShape()->getAabb( pco->getInterpolationWorldTransform(),
mins,
maxs);

View File

@@ -750,7 +750,8 @@ struct btSoftColliders
friction = btMin(psb->m_cfg.kDF,prb->getFriction());
btVector3 mins;
btVector3 maxs;
btDbvtVolume volume;
ATTRIBUTE_ALIGNED16(btDbvtVolume) volume;
pr->getCollisionShape()->getAabb(pr->getInterpolationWorldTransform(),mins,maxs);
volume=btDbvtVolume::FromMM(mins,maxs);
volume.Expand(btVector3(1,1,1)*margin);