Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErwin Coumans <blender@erwincoumans.com>2006-11-21 03:03:56 +0300
committerErwin Coumans <blender@erwincoumans.com>2006-11-21 03:03:56 +0300
commitd58670ddd2e43c9ba6e56c766827165eb3ba08cb (patch)
tree96e85d2feeb35a9939297257ceccca9edd6f05b9 /extern/bullet2/src/BulletCollision/CollisionDispatch
parent731e7e3915f35de124ab65b455316e5fd3e60585 (diff)
catch up with latest Bullet 2.x (not in use yet)
Diffstat (limited to 'extern/bullet2/src/BulletCollision/CollisionDispatch')
-rw-r--r--extern/bullet2/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h3
-rw-r--r--extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp8
-rw-r--r--extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.h4
-rw-r--r--extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp34
4 files changed, 30 insertions, 19 deletions
diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h b/extern/bullet2/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
index 22262340222..8fedba19922 100644
--- a/extern/bullet2/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
+++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/SphereTriangleDetector.h
@@ -45,4 +45,5 @@ private:
};
-#endif //SPHERE_TRIANGLE_DETECTOR_H \ No newline at end of file
+#endif //SPHERE_TRIANGLE_DETECTOR_H
+
diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
index 7edd3e8abfe..775ed3e13d8 100644
--- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
+++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.cpp
@@ -121,13 +121,13 @@ void btCollisionWorld::addCollisionObject(btCollisionObject* collisionObject,sho
}
-void btCollisionWorld::performDiscreteCollisionDetection()
+
+
+
+void btCollisionWorld::performDiscreteCollisionDetection(btDispatcherInfo& dispatchInfo)
{
BEGIN_PROFILE("performDiscreteCollisionDetection");
- btDispatcherInfo dispatchInfo;
- dispatchInfo.m_timeStep = 0.f;
- dispatchInfo.m_stepCount = 0;
//update aabb (of all moved objects)
diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.h b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.h
index e2b8eb11238..e212e520bda 100644
--- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.h
+++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btCollisionWorld.h
@@ -236,8 +236,8 @@ public:
void removeCollisionObject(btCollisionObject* collisionObject);
- virtual void performDiscreteCollisionDetection();
-
+ virtual void performDiscreteCollisionDetection( btDispatcherInfo& dispatchInfo);
+
};
diff --git a/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp b/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
index 36b0d15eac5..e896508bdb9 100644
--- a/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
+++ b/extern/bullet2/src/BulletCollision/CollisionDispatch/btConvexConvexAlgorithm.cpp
@@ -39,7 +39,9 @@ subject to the following restrictions:
#include "BulletCollision/NarrowPhaseCollision/btMinkowskiPenetrationDepthSolver.h"
-//#include "NarrowPhaseCollision/EpaPenetrationDepthSolver.h"
+#include "BulletCollision/NarrowPhaseCollision/btGjkEpa.h"
+#include "BulletCollision/NarrowPhaseCollision/btGjkEpaPenetrationDepthSolver.h"
+
#ifdef WIN32
#if _MSC_VER >= 1310
@@ -59,7 +61,7 @@ subject to the following restrictions:
#endif //USE_HULL
-bool gUseEpa = false;
+bool gUseEpa = true;
#ifdef WIN32
@@ -113,13 +115,10 @@ void btConvexConvexAlgorithm ::setLowLevelOfDetail(bool useLowLevel)
+static btGjkEpaPenetrationDepthSolver gEpaPenetrationDepthSolver;
static btMinkowskiPenetrationDepthSolver gPenetrationDepthSolver;
-//static EpaPenetrationDepthSolver gEpaPenetrationDepthSolver;
-#ifdef USE_EPA
-Solid3EpaPenetrationDepth gSolidEpaPenetrationSolver;
-#endif //USE_EPA
void btConvexConvexAlgorithm::checkPenetrationDepthSolver()
{
@@ -128,10 +127,7 @@ void btConvexConvexAlgorithm::checkPenetrationDepthSolver()
m_useEpa = gUseEpa;
if (m_useEpa)
{
-
- // m_gjkPairDetector.setPenetrationDepthSolver(&gEpaPenetrationDepthSolver);
-
-
+ m_gjkPairDetector.setPenetrationDepthSolver(&gEpaPenetrationDepthSolver);
} else
{
m_gjkPairDetector.setPenetrationDepthSolver(&gPenetrationDepthSolver);
@@ -153,8 +149,21 @@ void btConvexConvexAlgorithm ::processCollision (btCollisionObject* body0,btColl
m_manifoldPtr = m_dispatcher->getNewManifold(body0,body1);
m_ownManifold = true;
}
+ resultOut->setPersistentManifold(m_manifoldPtr);
-
+#ifdef USE_BT_GJKEPA
+ btConvexShape* shape0(static_cast<btConvexShape*>(body0->getCollisionShape()));
+ btConvexShape* shape1(static_cast<btConvexShape*>(body1->getCollisionShape()));
+ const btScalar radialmargin(0/*shape0->getMargin()+shape1->getMargin()*/);
+ btGjkEpaSolver::sResults results;
+ if(btGjkEpaSolver::Collide( shape0,body0->getWorldTransform(),
+ shape1,body1->getWorldTransform(),
+ radialmargin,results))
+ {
+ dispatchInfo.m_debugDraw->drawLine(results.witnesses[1],results.witnesses[1]+results.normal,btVector3(255,0,0));
+ resultOut->addContactPoint(results.normal,results.witnesses[1],-results.depth);
+ }
+#else
checkPenetrationDepthSolver();
btConvexShape* min0 = static_cast<btConvexShape*>(body0->getCollisionShape());
@@ -173,8 +182,8 @@ void btConvexConvexAlgorithm ::processCollision (btCollisionObject* body0,btColl
input.m_transformA = body0->getWorldTransform();
input.m_transformB = body1->getWorldTransform();
- resultOut->setPersistentManifold(m_manifoldPtr);
m_gjkPairDetector.getClosestPoints(input,*resultOut,dispatchInfo.m_debugDraw);
+#endif
}
@@ -274,3 +283,4 @@ float btConvexConvexAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btC
return resultFraction;
}
+