57 m_simplexSolver(simplexSolver),
61 m_lowLevelOfDetail(
false)
76void btConvex2dConvex2dAlgorithm ::setLowLevelOfDetail(
bool useLowLevel)
78 m_lowLevelOfDetail = useLowLevel;
114 input.m_maximumDistanceSquared = min0->getMargin() + min1->getMargin() + m_manifoldPtr->getContactBreakingThreshold();
115 input.m_maximumDistanceSquared *=
input.m_maximumDistanceSquared;
143 btScalar squareMot0 = (col0->getInterpolationWorldTransform().
getOrigin() - col0->getWorldTransform().getOrigin()).length2();
144 btScalar squareMot1 = (col1->getInterpolationWorldTransform().
getOrigin() - col1->getWorldTransform().getOrigin()).length2();
148 return resultFraction;
167 if (ccd1.
calcTimeOfImpact(col0->getWorldTransform(), col0->getInterpolationWorldTransform(),
168 col1->getWorldTransform(), col1->getInterpolationWorldTransform(),
result))
172 if (col0->getHitFraction() >
result.m_fraction)
173 col0->setHitFraction(
result.m_fraction);
175 if (col1->getHitFraction() >
result.m_fraction)
176 col1->setHitFraction(
result.m_fraction);
178 if (resultFraction >
result.m_fraction)
179 resultFraction =
result.m_fraction;
194 if (ccd1.
calcTimeOfImpact(col0->getWorldTransform(), col0->getInterpolationWorldTransform(),
195 col1->getWorldTransform(), col1->getInterpolationWorldTransform(),
result))
199 if (col0->getHitFraction() >
result.m_fraction)
200 col0->setHitFraction(
result.m_fraction);
202 if (col1->getHitFraction() >
result.m_fraction)
203 col1->setHitFraction(
result.m_fraction);
205 if (resultFraction >
result.m_fraction)
206 resultFraction =
result.m_fraction;
210 return resultFraction;
btScalar getCcdSquareMotionThreshold() const
btScalar gContactBreakingThreshold
btConvexShape()
not supported on IBM SDK, until we fix the alignment of btVector3
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
#define btSimplexSolverInterface
btSphereShape(btScalar radius)
btVector3
btVector3 can be used to represent 3D points and vectors. It has an un-used w component to suit 16-by...
btActivatingCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo &ci)
btDispatcher * m_dispatcher
virtual ~btConvex2dConvex2dAlgorithm()
virtual btScalar calculateTimeOfImpact(btCollisionObject *body0, btCollisionObject *body1, const btDispatcherInfo &dispatchInfo, btManifoldResult *resultOut)
btConvex2dConvex2dAlgorithm(btPersistentManifold *mf, const btCollisionAlgorithmConstructionInfo &ci, const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, btSimplexSolverInterface *simplexSolver, btConvexPenetrationDepthSolver *pdSolver, int numPerturbationIterations, int minimumPointsPerturbationThreshold)
ConvexPenetrationDepthSolver provides an interface for penetration depth calculation.
GjkConvexCast performs a raycast on a convex object using support mapping.
virtual bool calcTimeOfImpact(const btTransform &fromA, const btTransform &toA, const btTransform &fromB, const btTransform &toB, CastResult &result)
cast a convex against another convex object
btGjkPairDetector uses GJK to implement the btDiscreteCollisionDetectorInterface
virtual void getClosestPoints(const ClosestPointInput &input, Result &output, class btIDebugDraw *debugDraw, bool swapResults=false)
void setMinkowskiA(const btConvexShape *minkA)
void setMinkowskiB(const btConvexShape *minkB)
btManifoldResult is a helper class to manage contact results.
void setPersistentManifold(btPersistentManifold *manifoldPtr)
SIMD_FORCE_INLINE void refreshContactPoints()
SIMD_FORCE_INLINE const btCollisionShape * getCollisionShape() const
SIMD_FORCE_INLINE const btTransform & getWorldTransform() const
SIMD_FORCE_INLINE const btCollisionObject * getCollisionObject() const
btConvexPenetrationDepthSolver * m_pdSolver
CreateFunc(btSimplexSolverInterface *simplexSolver, btConvexPenetrationDepthSolver *pdSolver)
btSimplexSolverInterface * m_simplexSolver
class btIDebugDraw * m_debugDraw