prepare and added constraint solver optimizations, not activated yet.

This commit is contained in:
ejcoumans
2007-03-17 00:09:12 +00:00
parent ea97ed3e30
commit 151cd4b9da
21 changed files with 897 additions and 56 deletions

View File

@@ -29,7 +29,8 @@ class btManifoldPoint
{
public:
btManifoldPoint()
:m_userPersistentData(0)
:m_userPersistentData(0),
m_lifeTime(0)
{
}
@@ -76,12 +77,12 @@ class btManifoldPoint
return m_lifeTime;
}
btVector3 getPositionWorldOnA() {
const btVector3& getPositionWorldOnA() const {
return m_positionWorldOnA;
// return m_positionWorldOnB + m_normalWorldOnB * m_distance1;
}
const btVector3& getPositionWorldOnB()
const btVector3& getPositionWorldOnB() const
{
return m_positionWorldOnB;
}

View File

@@ -115,11 +115,23 @@ public:
}
void replaceContactPoint(const btManifoldPoint& newPoint,int insertIndex)
{
assert(validContactDistance(newPoint));
btAssert(validContactDistance(newPoint));
clearUserCache(m_pointCache[insertIndex]);
#define MAINTAIN_PERSISTENCY 1
#ifdef MAINTAIN_PERSISTENCY
int lifeTime = m_pointCache[insertIndex].getLifeTime();
btAssert(lifeTime>=0);
void* cache = m_pointCache[insertIndex].m_userPersistentData;
m_pointCache[insertIndex] = newPoint;
m_pointCache[insertIndex].m_userPersistentData = cache;
m_pointCache[insertIndex].m_lifeTime = lifeTime;
#else
clearUserCache(m_pointCache[insertIndex]);
m_pointCache[insertIndex] = newPoint;
#endif
}
bool validContactDistance(const btManifoldPoint& pt) const