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);
|
(*gContactAddedCallback)(newPt,m_body0,m_partId0,m_index0,m_body1,m_partId1,m_index1);
|
||||||
}
|
}
|
||||||
*/
|
*/
|
||||||
manifoldPtr->AddManifoldPoint(newPt);
|
manifoldPtr->addManifoldPoint(newPt);
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -100,7 +100,7 @@ void btManifoldResult::addContactPoint(const btVector3& normalOnBInWorld,const b
|
|||||||
m_manifoldPtr->replaceContactPoint(newPt,insertIndex);
|
m_manifoldPtr->replaceContactPoint(newPt,insertIndex);
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
m_manifoldPtr->AddManifoldPoint(newPt);
|
insertIndex = m_manifoldPtr->addManifoldPoint(newPt);
|
||||||
}
|
}
|
||||||
|
|
||||||
//User can override friction and/or restitution
|
//User can override friction and/or restitution
|
||||||
@@ -112,7 +112,7 @@ void btManifoldResult::addContactPoint(const btVector3& normalOnBInWorld,const b
|
|||||||
//experimental feature info, for per-triangle material etc.
|
//experimental feature info, for per-triangle material etc.
|
||||||
btCollisionObject* obj0 = isSwapped? m_body1 : m_body0;
|
btCollisionObject* obj0 = isSwapped? m_body1 : m_body0;
|
||||||
btCollisionObject* obj1 = isSwapped? m_body0 : m_body1;
|
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;
|
return nearestPoint;
|
||||||
}
|
}
|
||||||
|
|
||||||
void btPersistentManifold::AddManifoldPoint(const btManifoldPoint& newPoint)
|
int btPersistentManifold::addManifoldPoint(const btManifoldPoint& newPoint)
|
||||||
{
|
{
|
||||||
assert(validContactDistance(newPoint));
|
assert(validContactDistance(newPoint));
|
||||||
|
|
||||||
@@ -185,6 +185,7 @@ void btPersistentManifold::AddManifoldPoint(const btManifoldPoint& newPoint)
|
|||||||
}
|
}
|
||||||
btAssert(m_pointCache[insertIndex].m_userPersistentData==0);
|
btAssert(m_pointCache[insertIndex].m_userPersistentData==0);
|
||||||
m_pointCache[insertIndex] = newPoint;
|
m_pointCache[insertIndex] = newPoint;
|
||||||
|
return insertIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
btScalar btPersistentManifold::getContactBreakingThreshold() const
|
btScalar btPersistentManifold::getContactBreakingThreshold() const
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ public:
|
|||||||
|
|
||||||
int getCacheEntry(const btManifoldPoint& newPoint) const;
|
int getCacheEntry(const btManifoldPoint& newPoint) const;
|
||||||
|
|
||||||
void AddManifoldPoint( const btManifoldPoint& newPoint);
|
int addManifoldPoint( const btManifoldPoint& newPoint);
|
||||||
|
|
||||||
void removeContactPoint (int index)
|
void removeContactPoint (int index)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user