70 :m_dispatcher1(dispatcher),
71 m_broadphasePairCache(pairCache),
73 m_forceUpdateAllAabbs(true)
134 collisionFilterGroup,
153 minAabb -= contactThreshold;
154 maxAabb += contactThreshold;
160 minAabb2 -= contactThreshold;
161 maxAabb2 += contactThreshold;
178 static bool reportMe =
true;
216 BT_PROFILE(
"performDiscreteCollisionDetection");
295 bool condition =
true;
298 convexCasterPtr = &subSimplexConvexCaster;
300 convexCasterPtr = &gjkConvexCaster;
304 if (convexCaster.
calcTimeOfImpact(rayFromTrans,rayToTrans,colObjWorldTransform,colObjWorldTransform,castResult))
311 #ifdef USE_SUBSIMPLEX_CONVEX_CAST
314 #endif //USE_SUBSIMPLEX_CONVEX_CAST
325 bool normalInWorldSpace =
true;
348 m_resultCallback(resultCallback),
349 m_collisionObject(collisionObject),
350 m_triangleMesh(triangleMesh),
351 m_colObjWorldTransform(colObjWorldTransform)
362 btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal;
370 bool normalInWorldSpace =
true;
371 return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace);
386 BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObjectWrap->
getCollisionObject(),triangleMesh,colObjWorldTransform);
394 BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObjectWrap->
getCollisionObject(),concaveShape, colObjWorldTransform);
421 m_resultCallback(resultCallback),
422 m_collisionObject(collisionObject),
423 m_triangleMesh(triangleMesh),
424 m_colObjWorldTransform(colObjWorldTransform)
435 btVector3 hitNormalWorld = m_colObjWorldTransform.getBasis() * hitNormalLocal;
443 bool normalInWorldSpace =
true;
444 return m_resultCallback->addSingleResult(rayResult,normalInWorldSpace);
450 BridgeTriangleRaycastCallback rcb(rayFromLocal,rayToLocal,&resultCallback,collisionObjectWrap->
getCollisionObject(),concaveShape, colObjWorldTransform);
453 btVector3 rayAabbMinLocal = rayFromLocal;
454 rayAabbMinLocal.
setMin(rayToLocal);
455 btVector3 rayAabbMaxLocal = rayFromLocal;
456 rayAabbMaxLocal.
setMax(rayToLocal);
470 : m_userCallback(user), m_i(i)
472 m_closestHitFraction = m_userCallback->m_closestHitFraction;
473 m_flags = m_userCallback->m_flags;
477 return m_userCallback->needsCollision(p);
488 const btScalar result = m_userCallback->addSingleResult(r, b);
489 m_closestHitFraction = m_userCallback->m_closestHitFraction;
509 m_collisionObject(collisionObject),
510 m_compoundShape(compoundShape),
511 m_colObjWorldTransform(colObjWorldTransform),
512 m_rayFromTrans(rayFromTrans),
513 m_rayToTrans(rayToTrans),
514 m_resultCallback(resultCallback)
519 void ProcessLeaf(
int i)
521 const btCollisionShape* childCollisionShape = m_compoundShape->getChildShape(i);
522 const btTransform& childTrans = m_compoundShape->getChildTransform(i);
523 btTransform childWorldTrans = m_colObjWorldTransform * childTrans;
530 LocalInfoAdder2 my_cb(i, &m_resultCallback);
553 colObjWorldTransform,
557 #ifndef DISABLE_DBVT_COMPOUNDSHAPE_RAYCAST_ACCELERATION
560 btVector3 localRayFrom = colObjWorldTransform.inverseTimes(rayFromTrans).getOrigin();
561 btVector3 localRayTo = colObjWorldTransform.inverseTimes(rayToTrans).getOrigin();
565 #endif //DISABLE_DBVT_COMPOUNDSHAPE_RAYCAST_ACCELERATION
569 rayCB.ProcessLeaf(i);
613 if (castPtr->
calcTimeOfImpact(convexFromTrans,convexToTrans,colObjWorldTransform,colObjWorldTransform,castResult))
630 bool normalInWorldSpace =
true;
659 m_resultCallback(resultCallback),
660 m_collisionObject(collisionObject),
661 m_triangleMesh(triangleMesh)
671 if (hitFraction <= m_resultCallback->m_closestHitFraction)
681 bool normalInWorldSpace =
true;
684 return m_resultCallback->addSingleResult(convexResult,normalInWorldSpace);
691 BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,colObjWrap->
getCollisionObject(),triangleMesh, colObjWorldTransform);
693 tccb.m_allowedPenetration = allowedPenetration;
695 castShape->
getAabb(rotationXform, boxMinLocal, boxMaxLocal);
696 triangleMesh->
performConvexcast(&tccb,convexFromLocal,convexToLocal,boxMinLocal, boxMaxLocal);
708 if (castPtr->
calcTimeOfImpact(convexFromTrans,convexToTrans,colObjWorldTransform,colObjWorldTransform,castResult))
725 bool normalInWorldSpace =
true;
751 m_resultCallback(resultCallback),
752 m_collisionObject(collisionObject),
753 m_triangleMesh(triangleMesh)
763 if (hitFraction <= m_resultCallback->m_closestHitFraction)
773 bool normalInWorldSpace =
false;
775 return m_resultCallback->addSingleResult(convexResult,normalInWorldSpace);
782 BridgeTriangleConvexcastCallback tccb(castShape, convexFromTrans,convexToTrans,&resultCallback,colObjWrap->
getCollisionObject(),concaveShape, colObjWorldTransform);
784 tccb.m_allowedPenetration = allowedPenetration;
786 castShape->
getAabb(rotationXform, boxMinLocal, boxMaxLocal);
788 btVector3 rayAabbMinLocal = convexFromLocal;
789 rayAabbMinLocal.
setMin(convexToLocal);
790 btVector3 rayAabbMaxLocal = convexFromLocal;
791 rayAabbMaxLocal.
setMax(convexToLocal);
792 rayAabbMinLocal += boxMinLocal;
793 rayAabbMaxLocal += boxMaxLocal;
808 btTransform childWorldTrans = colObjWorldTransform * childTrans;
815 : m_userCallback(user), m_i(i)
817 m_closestHitFraction = m_userCallback->m_closestHitFraction;
821 return m_userCallback->needsCollision(p);
830 const btScalar result = m_userCallback->addSingleResult(r, b);
831 m_closestHitFraction = m_userCallback->m_closestHitFraction;
837 LocalInfoAdder my_cb(i, &resultCallback);
842 &tmpObj,my_cb, allowedPenetration);
874 btVector3 rayDir = (rayToWorld-rayFromWorld);
905 #ifdef RECALCULATE_AABB
906 btVector3 collisionObjectAabbMin,collisionObjectAabbMax;
936 #ifndef USE_BRUTEFORCE_RAYBROADPHASE
943 #endif //USE_BRUTEFORCE_RAYBROADPHASE
1018 convexFromTrans = convexFromWorld;
1019 convexToTrans = convexToWorld;
1020 btVector3 castShapeAabbMin, castShapeAabbMax;
1033 #ifndef USE_BRUTEFORCE_RAYBROADPHASE
1035 btSingleSweepCallback convexCB(castShape,convexFromWorld,convexToWorld,
this,resultCallback,allowedCcdPenetration);
1049 btVector3 collisionObjectAabbMin,collisionObjectAabbMax;
1051 AabbExpand (collisionObjectAabbMin, collisionObjectAabbMax, castShapeAabbMin, castShapeAabbMax);
1054 if (
btRayAabb(convexFromWorld.
getOrigin(),convexToWorld.
getOrigin(),collisionObjectAabbMin,collisionObjectAabbMax,hitLambda,hitNormal))
1061 allowedCcdPenetration);
1065 #endif //USE_BRUTEFORCE_RAYBROADPHASE
1084 btVector3 pointA = pointInWorld + normalOnBInWorld * depth;
1162 algorithm->~btCollisionAlgorithm();
1195 algorithm->processCollision(&obA,&obB,
getDispatchInfo(),&contactPointResult);
1197 algorithm->~btCollisionAlgorithm();
1229 (void)triangleIndex;
1362 int lastV = poly->
m_faces[i].m_indices[numVerts-1];
1363 for (
int v=0;v<poly->
m_faces[i].m_indices.
size();v++)
1365 int curVert = poly->
m_faces[i].m_indices[v];
1436 for (
int i=0;i<numManifolds;i++)
1443 for (
int j=0;j<numContacts;j++)
1489 minAabb -= contactThreshold;
1490 maxAabb += contactThreshold;
1497 minAabb2 -= contactThreshold;
1498 maxAabb2 += contactThreshold;
1499 minAabb.
setMin(minAabb2);
1500 maxAabb.
setMax(maxAabb2);
1533 if (!serializedShapes.
find(shape))
1535 serializedShapes.
insert(shape,shape);
virtual void finishSerialization()=0
btSingleSweepCallback(const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionWorld *world, btCollisionWorld::ConvexResultCallback &resultCallback, btScalar allowedPenetration)
void serializeCollisionObjects(btSerializer *serializer)
btAlignedObjectArray< btVector3 > m_vertices
btPersistentManifold is a contact point cache, it stays persistent as long as objects are overlapping...
The btConvexTriangleMeshShape is a convex hull of a triangle mesh, but the performance is not as good...
void push_back(const T &_Val)
btVector3 getHalfExtentsWithMargin() const
btConvexCast is an interface for Casting
virtual btCollisionAlgorithm * findAlgorithm(const btCollisionObjectWrapper *body0Wrap, const btCollisionObjectWrapper *body1Wrap, btPersistentManifold *sharedManifold=0)=0
void setValue(const btScalar &_x, const btScalar &_y, const btScalar &_z)
void performRaycast(btTriangleCallback *callback, const btVector3 &raySource, const btVector3 &rayTarget)
virtual void rayTest(const btVector3 &rayFromWorld, const btVector3 &rayToWorld, RayResultCallback &resultCallback) const
rayTest performs a raycast on all objects in the btCollisionWorld, and calls the resultCallback This ...
LocalShapeInfo * m_localShapeInfo
virtual void updateAabbs()
btScalar getRadius() const
btPersistentManifold * m_manifoldPtr
virtual btScalar getRadius() const
btCollisionWorld(btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration)
for debug drawing
virtual void reportErrorWarning(const char *warningString)=0
virtual btPersistentManifold * getManifoldByIndexInternal(int index)=0
bool m_forceUpdateAllAabbs
m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs it is...
btVector3 getHalfExtentsWithMargin() const
virtual void drawLine(const btVector3 &from, const btVector3 &to, const btVector3 &color)=0
virtual void dispatchAllCollisionPairs(btOverlappingPairCache *pairCache, const btDispatcherInfo &dispatchInfo, btDispatcher *dispatcher)=0
virtual void startSerialization()=0
int getInternalType() const
reserved for Bullet internal usage
The btMultiSphereShape represents the convex hull of a collection of spheres.
virtual void drawBox(const btVector3 &bbMin, const btVector3 &bbMax, const btVector3 &color)
virtual void addCollisionObject(btCollisionObject *collisionObject, short int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, short int collisionFilterMask=btBroadphaseProxy::AllFilter)
The btCapsuleShape represents a capsule around the Y axis, there is also the btCapsuleShapeX aligned ...
const btVector3 & getPlaneNormal() const
btScalar getSphereRadius(int index) const
virtual void drawPlane(const btVector3 &planeNormal, btScalar planeConst, const btTransform &transform, const btVector3 &color)
btCollisionConfiguration allows to configure Bullet collision detection stack allocator size...
The btDbvt class implements a fast dynamic bounding volume tree based on axis aligned bounding boxes ...
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
RayResultCallback is used to report new raycast results.
btContinuousConvexCollision implements angular and linear time of impact for convex objects...
int getNumCollisionObjects() const
The btSphereShape implements an implicit sphere, centered around a local origin with radius...
btCollisionWorld::RayResultCallback & m_resultCallback
ManifoldContactPoint collects and maintains persistent contactpoints.
btScalar getRadius() const
const btCollisionWorld * m_world
int getCollisionFlags() const
const btCollisionObject * getBody0() const
btDispatcher * m_dispatcher1
btManifoldResult is a helper class to manage contact results.
virtual void serializeSingleShape(btSerializer *serializer) const
static DBVT_PREFIX void rayTest(const btDbvtNode *root, const btVector3 &rayFrom, const btVector3 &rayTo, DBVT_IPOLICY)
rayTest is a re-entrant ray test, and can be called in parallel as long as the btAlignedAlloc is thre...
static void rayTestSingleInternal(const btTransform &rayFromTrans, const btTransform &rayToTrans, const btCollisionObjectWrapper *collisionObjectWrap, RayResultCallback &resultCallback)
const btDbvt * getDynamicAabbTree() const
int getConeUpIndex() const
This class manages a mesh supplied by the btStridingMeshInterface interface.
Used for GIMPACT Trimesh integration.
virtual void computeOverlappingPairs()
the computeOverlappingPairs is usually already called by performDiscreteCollisionDetection (or stepSi...
virtual void drawCapsule(btScalar radius, btScalar halfHeight, int upAxis, const btTransform &transform, const btVector3 &color)
btScalar m_closestHitFraction
btSingleRayCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld, const btCollisionWorld *world, btCollisionWorld::RayResultCallback &resultCallback)
virtual void processAllTriangles(btTriangleCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const =0
virtual void drawContactPoint(const btVector3 &PointOnB, const btVector3 &normalOnB, btScalar distance, int lifeTime, const btVector3 &color)=0
virtual void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
getAabb returns the axis aligned bounding box in the coordinate frame of the given transform t...
btScalar dot(const btVector3 &v) const
Return the dot product.
const btCollisionObjectWrapper * m_body1Wrap
The btHashMap template class implements a generic and lightweight hashmap.
btVector3 & normalize()
Normalize this vector x^2 + y^2 + z^2 = 1.
btTransform m_convexToTrans
The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape...
const btTransform & getInterpolationWorldTransform() const
GjkConvexCast performs a raycast on a convex object using support mapping.
The btTriangleMeshShape is an internal concave triangle mesh interface. Don't use this class directly...
btScalar m_allowedPenetration
virtual void getEdge(int i, btVector3 &pa, btVector3 &pb) const =0
void AabbExpand(btVector3 &aabbMin, btVector3 &aabbMax, const btVector3 &expansionMin, const btVector3 &expansionMax)
virtual btOverlappingPairCache * getOverlappingPairCache()=0
The btBvhTriangleMeshShape is a static-triangle mesh shape, it can only be used for fixed/non-moving ...
btIDebugDraw * m_debugDrawer
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)=0
void setActivationState(int newState) const
btTransform & getWorldTransform()
btVector3 m_normalWorldOnB
RayResult stores the closest result alternatively, add a callback method to decide about closest/all ...
btVector3 m_positionWorldOnB
virtual void drawCone(btScalar radius, btScalar height, int upAxis, const btTransform &transform, const btVector3 &color)
int size() const
return the number of elements in the array
void getAabb(const btTransform &t, btVector3 &aabbMin, btVector3 &aabbMax) const =0
getAabb's default implementation is brute force, expected derived classes to implement a fast dedicat...
btBroadphaseProxy * getBroadphaseHandle()
btTransform m_convexFromTrans
btVoronoiSimplexSolver is an implementation of the closest point distance algorithm from a 1-4 points...
const btCollisionWorld * m_world
btCollisionWorld::ConvexResultCallback & m_resultCallback
void calculateTemporalAabb(const btTransform &curTrans, const btVector3 &linvel, const btVector3 &angvel, btScalar timeStep, btVector3 &temporalAabbMin, btVector3 &temporalAabbMax) const
calculateTemporalAabb calculates the enclosing aabb for the moving object over interval [0...
btIDebugDraw * m_debugDrawer
virtual btIDebugDraw * getDebugDrawer()
int getSphereCount() const
void contactPairTest(btCollisionObject *colObjA, btCollisionObject *colObjB, ContactResultCallback &resultCallback)
contactTest performs a discrete collision test between two collision objects and calls the resultCall...
btAlignedObjectArray< btFace > m_faces
The btTriangleCallback provides a callback for each overlapping triangle when calling processAllTrian...
DebugDrawcallback(btIDebugDraw *debugDrawer, const btTransform &worldTrans, const btVector3 &color)
virtual void processAllTrianglesRay(btTriangleCallback *callback, const btVector3 &rayFrom, const btVector3 &rayTo) const
Function for retrieve triangles.
bool isStaticObject() const
The btConeShape implements a cone shape primitive, centered around the origin and aligned with the Y ...
btTransform & getChildTransform(int index)
virtual void cleanProxyFromPairs(btBroadphaseProxy *proxy, btDispatcher *dispatcher)=0
btScalar getHeight() const
const btConvexPolyhedron * getConvexPolyhedron() const
virtual void debugDrawObject(const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
void contactTest(btCollisionObject *colObj, ContactResultCallback &resultCallback)
contactTest performs a discrete collision test between colObj against all objects in the btCollisionW...
bool isStaticOrKinematicObject() const
const btTransform & getWorldTransform() const
btCollisionObject can be used to manage collision detection objects.
void insert(const Key &key, const Value &value)
#define DISABLE_SIMULATION
The btPolyhedralConvexShape is an internal interface class for polyhedral convex shapes.
static void rayTestSingle(const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback)
rayTestSingle performs a raycast call and calls the resultCallback.
The btIDebugDraw interface class allows hooking up a debug renderer to visually debug simulations...
LocalShapeInfo gives extra information for complex shapes Currently, only btTriangleMeshShape is avai...
virtual void drawAabb(const btVector3 &from, const btVector3 &to, const btVector3 &color)
btVector3 m_positionWorldOnA
m_positionWorldOnA is redundant information, see getPositionWorldOnA(), but for clarity ...
virtual void removeCollisionObject(btCollisionObject *collisionObject)
virtual void freeCollisionAlgorithm(void *ptr)=0
void performConvexcast(btTriangleCallback *callback, const btVector3 &boxSource, const btVector3 &boxTarget, const btVector3 &boxMin, const btVector3 &boxMax)
virtual ~btCollisionWorld()
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs...
const btManifoldPoint & getContactPoint(int index) const
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
btDispatcher * getDispatcher()
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
const btCollisionShape * getCollisionShape() const
virtual void processTriangle(btVector3 *triangle, int partId, int triangleIndex)
The btBoxShape is a box primitive around the origin, its sides axis aligned with length specified by ...
virtual void setMargin(btScalar margin)
btVector3 can be used to represent 3D points and vectors.
const Value * find(const Key &key) const
btScalar length2() const
Return the length of the vector squared.
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
virtual void serialize(btSerializer *serializer)
Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bulle...
virtual int getNumManifolds() const =0
const btBroadphaseInterface * getBroadphase() const
static void objectQuerySingle(const btConvexShape *castShape, const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
objectQuerySingle performs a collision detection query and calls the resultCallback. It is used internally by rayTest.
btSubsimplexConvexCast implements Gino van den Bergens' paper "Ray Casting against bteral Convex Obje...
CollisionWorld is interface and container for the collision detection.
EpaPenetrationDepthSolver uses the Expanding Polytope Algorithm to calculate the penetration depth be...
void setBroadphaseHandle(btBroadphaseProxy *handle)
btDispatcherInfo & getDispatchInfo()
btVector3 normalized() const
Return a normalized version of this vector.
bool isPolyhedral() const
#define WANTS_DEACTIVATION
The btConcaveShape class provides an interface for non-moving (static) concave shapes.
void remove(const T &key)
virtual void drawTransform(const btTransform &transform, btScalar orthoLen)
int getNumContacts() const
int findLinearSearch(const T &key) const
virtual btScalar getMargin() const
virtual int getDebugMode() const =0
btAlignedObjectArray< btCollisionObject * > m_collisionObjects
static float4 cross(const float4 &a, const float4 &b)
The btCylinderShape class implements a cylinder shape primitive, centered around the origin...
#define DISABLE_DEACTIVATION
virtual bool process(const btBroadphaseProxy *proxy)
virtual void serializeSingleObject(class btSerializer *serializer) const
btVector3 m_rayDirectionInverse
added some cached data to accelerate ray-AABB tests
virtual void performDiscreteCollisionDetection()
LocalShapeInfo * m_localShapeInfo
btBroadphaseInterface * m_broadphasePairCache
btScalar m_closestHitFraction
virtual void setAabb(btBroadphaseProxy *proxy, const btVector3 &aabbMin, const btVector3 &aabbMax, btDispatcher *dispatcher)=0
const btCollisionObjectWrapper * m_body0Wrap
btScalar m_allowedCcdPenetration
const btConvexShape * m_castShape
virtual btScalar getMargin() const
virtual btScalar addSingleResult(LocalConvexResult &convexResult, bool normalInWorldSpace)=0
void updateSingleAabb(btCollisionObject *colObj)
The btCompoundShape allows to store multiple other btCollisionShapes This allows for moving concave c...
void setMax(const btVector3 &other)
Set each element to the max of the current values and the values of another btVector3.
class btStridingMeshInterface * getMeshInterface()
void convexSweepTest(const btConvexShape *castShape, const btTransform &from, const btTransform &to, ConvexResultCallback &resultCallback, btScalar allowedCcdPenetration=btScalar(0.)) const
convexTest performs a swept convex cast on all objects in the btCollisionWorld, and calls the resultC...
The btStaticPlaneShape simulates an infinite non-moving (static) collision plane. ...
RayResultCallback is used to report new raycast results.
btBridgedManifoldResult(const btCollisionObjectWrapper *obj0Wrap, const btCollisionObjectWrapper *obj1Wrap, btCollisionWorld::ContactResultCallback &resultCallback)
btScalar getDistance() const
virtual bool process(const btBroadphaseProxy *proxy)
btCollisionShape * getChildShape(int index)
const btVector3 & getSpherePosition(int index) const
virtual void internalProcessTriangleIndex(btVector3 *triangle, int partId, int triangleIndex)
virtual void debugDrawWorld()
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
btScalar getHalfHeight() const
btCollisionAlgorithm is an collision interface that is compatible with the Broadphase and btDispatche...
const btCollisionShape * getCollisionShape() const
btScalar gContactBreakingThreshold
virtual void drawSphere(btScalar radius, const btTransform &transform, const btVector3 &color)
bool btRayAabb(const btVector3 &rayFrom, const btVector3 &rayTo, const btVector3 &aabbMin, const btVector3 &aabbMax, btScalar ¶m, btVector3 &normal)
int getActivationState() const
virtual void destroyProxy(btBroadphaseProxy *proxy, btDispatcher *dispatcher)=0
virtual void addContactPoint(const btVector3 &normalOnBInWorld, const btVector3 &pointInWorld, btScalar depth)
btCollisionWorld::ContactResultCallback & m_resultCallback
btTransform m_rayFromTrans
virtual void drawCylinder(btScalar radius, btScalar halfHeight, int upAxis, const btTransform &transform, const btVector3 &color)
virtual void rayTest(const btVector3 &rayFrom, const btVector3 &rayTo, btBroadphaseRayCallback &rayCallback, const btVector3 &aabbMin=btVector3(0, 0, 0), const btVector3 &aabbMax=btVector3(0, 0, 0))=0
static void objectQuerySingleInternal(const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionObjectWrapper *colObjWrap, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
virtual void calculateOverlappingPairs(btDispatcher *dispatcher)=0
calculateOverlappingPairs is optional: incremental algorithms (sweep and prune) might do it during th...
void setMin(const btVector3 &other)
Set each element to the min of the current values and the values of another btVector3.
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
virtual void InternalProcessAllTriangles(btInternalTriangleIndexCallback *callback, const btVector3 &aabbMin, const btVector3 &aabbMax) const
const btScalar & getPlaneConstant() const
virtual void aabbTest(const btVector3 &aabbMin, const btVector3 &aabbMax, btBroadphaseAabbCallback &callback)=0
const btCollisionObject * getCollisionObject() const
virtual bool calcTimeOfImpact(const btTransform &fromA, const btTransform &toA, const btTransform &fromB, const btTransform &toB, CastResult &result)=0
cast a convex against another convex object
int getNumChildShapes() const
virtual int getNumEdges() const =0