pass in reference to actual contact point in cache, rather then temporary value, should fix issue 53
http://code.google.com/p/bullet/issues/detail?id=53 Thanks Alex Silverman for reporting and suggested fix Changed addContactPoint to lowercase
This commit is contained in:
@@ -150,7 +150,7 @@ bool ManifoldResultAddContactPoint(const btVector3& normalOnBInWorld,
|
||||
(*gContactAddedCallback)(newPt,m_body0,m_partId0,m_index0,m_body1,m_partId1,m_index1);
|
||||
}
|
||||
*/
|
||||
manifoldPtr->AddManifoldPoint(newPt);
|
||||
manifoldPtr->addManifoldPoint(newPt);
|
||||
return true;
|
||||
|
||||
}
|
||||
|
||||
@@ -100,9 +100,9 @@ void btManifoldResult::addContactPoint(const btVector3& normalOnBInWorld,const b
|
||||
m_manifoldPtr->replaceContactPoint(newPt,insertIndex);
|
||||
} else
|
||||
{
|
||||
m_manifoldPtr->AddManifoldPoint(newPt);
|
||||
insertIndex = m_manifoldPtr->addManifoldPoint(newPt);
|
||||
}
|
||||
|
||||
|
||||
//User can override friction and/or restitution
|
||||
if (gContactAddedCallback &&
|
||||
//and if either of the two bodies requires custom material
|
||||
@@ -112,7 +112,7 @@ void btManifoldResult::addContactPoint(const btVector3& normalOnBInWorld,const b
|
||||
//experimental feature info, for per-triangle material etc.
|
||||
btCollisionObject* obj0 = isSwapped? m_body1 : m_body0;
|
||||
btCollisionObject* obj1 = isSwapped? m_body0 : m_body1;
|
||||
(*gContactAddedCallback)(newPt,obj0,m_partId0,m_index0,obj1,m_partId1,m_index1);
|
||||
(*gContactAddedCallback)(m_manifoldPtr->getContactPoint(insertIndex),obj0,m_partId0,m_index0,obj1,m_partId1,m_index1);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -162,7 +162,7 @@ int btPersistentManifold::getCacheEntry(const btManifoldPoint& newPoint) const
|
||||
return nearestPoint;
|
||||
}
|
||||
|
||||
void btPersistentManifold::AddManifoldPoint(const btManifoldPoint& newPoint)
|
||||
int btPersistentManifold::addManifoldPoint(const btManifoldPoint& newPoint)
|
||||
{
|
||||
assert(validContactDistance(newPoint));
|
||||
|
||||
@@ -185,6 +185,7 @@ void btPersistentManifold::AddManifoldPoint(const btManifoldPoint& newPoint)
|
||||
}
|
||||
btAssert(m_pointCache[insertIndex].m_userPersistentData==0);
|
||||
m_pointCache[insertIndex] = newPoint;
|
||||
return insertIndex;
|
||||
}
|
||||
|
||||
btScalar btPersistentManifold::getContactBreakingThreshold() const
|
||||
|
||||
@@ -111,7 +111,7 @@ public:
|
||||
|
||||
int getCacheEntry(const btManifoldPoint& newPoint) const;
|
||||
|
||||
void AddManifoldPoint( const btManifoldPoint& newPoint);
|
||||
int addManifoldPoint( const btManifoldPoint& newPoint);
|
||||
|
||||
void removeContactPoint (int index)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user