72 #ifndef BT_COLLISION_WORLD_H 73 #define BT_COLLISION_WORLD_H 122 m_broadphasePairCache = pairCache;
162 m_debugDrawer = debugDrawer;
192 :m_collisionObject(collisionObject),
193 m_localShapeInfo(localShapeInfo),
194 m_hitNormalLocal(hitNormalLocal),
195 m_hitFraction(hitFraction)
221 return (m_collisionObject != 0);
225 :m_closestHitFraction(
btScalar(1.)),
226 m_collisionObject(0),
248 :m_rayFromWorld(rayFromWorld),
249 m_rayToWorld(rayToWorld)
266 if (normalInWorldSpace)
272 m_hitNormalWorld = m_collisionObject->getWorldTransform().getBasis()*rayResult.
m_hitNormalLocal;
282 :m_rayFromWorld(rayFromWorld),
283 m_rayToWorld(rayToWorld)
301 if (normalInWorldSpace)
307 hitNormalWorld = m_collisionObject->getWorldTransform().getBasis()*rayResult.
m_hitNormalLocal;
309 m_hitNormalWorld.
push_back(hitNormalWorld);
312 m_hitPointWorld.
push_back(hitPointWorld);
314 return m_closestHitFraction;
327 :m_hitCollisionObject(hitCollisionObject),
328 m_localShapeInfo(localShapeInfo),
329 m_hitNormalLocal(hitNormalLocal),
330 m_hitPointLocal(hitPointLocal),
331 m_hitFraction(hitFraction)
350 :m_closestHitFraction(
btScalar(1.)),
362 return (m_closestHitFraction <
btScalar(1.));
380 :m_convexFromWorld(convexFromWorld),
381 m_convexToWorld(convexToWorld),
382 m_hitCollisionObject(0)
400 if (normalInWorldSpace)
423 m_closestDistanceThreshold(0)
445 return int(m_collisionObjects.
size());
525 m_forceUpdateAllAabbs = forceUpdateAllAabbs;
534 #endif //BT_COLLISION_WORLD_H void serializeCollisionObjects(btSerializer *serializer)
void push_back(const T &_Val)
void serializeContactManifolds(btSerializer *serializer)
LocalRayResult(const btCollisionObject *collisionObject, LocalShapeInfo *localShapeInfo, const btVector3 &hitNormalLocal, btScalar hitFraction)
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()
btDispatcherInfo m_dispatchInfo
btCollisionWorld(btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration)
for debug drawing
bool m_forceUpdateAllAabbs
m_forceUpdateAllAabbs can be set to false as an optimization to only update active object AABBs it is...
virtual void addCollisionObject(btCollisionObject *collisionObject, int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter)
btVector3 m_convexToWorld
btOverlappingPairCache * getPairCache()
btCollisionConfiguration allows to configure Bullet collision detection stack allocator size...
const btCollisionObject * m_collisionObject
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
btCollisionObjectArray & getCollisionObjectArray()
RayResultCallback is used to report new raycast results.
int getNumCollisionObjects() const
ManifoldContactPoint collects and maintains persistent contactpoints.
btVector3 m_convexFromWorld
btDispatcher * m_dispatcher1
virtual btScalar addSingleResult(LocalConvexResult &convexResult, bool normalInWorldSpace)
static void rayTestSingleInternal(const btTransform &rayFromTrans, const btTransform &rayToTrans, const btCollisionObjectWrapper *collisionObjectWrap, RayResultCallback &resultCallback)
btVector3 m_hitPointWorld
virtual void computeOverlappingPairs()
the computeOverlappingPairs is usually already called by performDiscreteCollisionDetection (or stepSi...
int m_collisionFilterGroup
btScalar m_closestHitFraction
The btConvexShape is an abstract shape interface, implemented by all convex shapes such as btBoxShape...
int m_collisionFilterGroup
The btOverlappingPairCache provides an interface for overlapping pair management (add, remove, storage), used by the btBroadphaseInterface broadphases.
const btCollisionObject * m_hitCollisionObject
int m_collisionFilterMask
virtual btOverlappingPairCache * getOverlappingPairCache()=0
virtual void setDebugDrawer(btIDebugDraw *debugDrawer)
btTransform & getWorldTransform()
void setBroadphase(btBroadphaseInterface *pairCache)
const btDispatcher * getDispatcher() const
int size() const
return the number of elements in the array
btIDebugDraw * m_debugDrawer
const btCollisionObjectArray & getCollisionObjectArray() const
virtual btIDebugDraw * getDebugDrawer()
void contactPairTest(btCollisionObject *colObjA, btCollisionObject *colObjB, ContactResultCallback &resultCallback)
contactTest performs a discrete collision test between two collision objects and calls the resultCall...
btVector3 m_hitNormalLocal
virtual ~RayResultCallback()
void setForceUpdateAllAabbs(bool forceUpdateAllAabbs)
btAlignedObjectArray< btScalar > m_hitFractions
ClosestConvexResultCallback(const btVector3 &convexFromWorld, const btVector3 &convexToWorld)
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...
btCollisionObject can be used to manage collision detection objects.
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...
btVector3 m_hitNormalWorld
LocalShapeInfo gives extra information for complex shapes Currently, only btTriangleMeshShape is avai...
virtual void removeCollisionObject(btCollisionObject *collisionObject)
const btCollisionObject * m_collisionObject
int m_collisionFilterGroup
btAlignedObjectArray< btVector3 > m_hitNormalWorld
virtual ~btCollisionWorld()
The btBroadphaseInterface class provides an interface to detect aabb-overlapping object pairs...
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
btDispatcher * getDispatcher()
int m_collisionFilterMask
The btBroadphaseProxy is the main class that can be used with the Bullet broadphases.
btVector3 can be used to represent 3D points and vectors.
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)
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...
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.
btBroadphaseInterface * getBroadphase()
btVector3 m_hitNormalLocal
CollisionWorld is interface and container for the collision detection.
btDispatcherInfo & getDispatchInfo()
virtual ~ConvexResultCallback()
btAlignedObjectArray< btVector3 > m_hitPointWorld
const btCollisionObject * m_hitCollisionObject
btAlignedObjectArray< btCollisionObject * > m_collisionObjects
virtual void performDiscreteCollisionDetection()
LocalShapeInfo * m_localShapeInfo
btAlignedObjectArray< const btCollisionObject * > m_collisionObjects
btVector3 m_hitPointWorld
virtual void refreshBroadphaseProxy(btCollisionObject *collisionObject)
btBroadphaseInterface * m_broadphasePairCache
bool getForceUpdateAllAabbs() const
btVector3 m_hitPointLocal
btScalar m_closestHitFraction
const btDispatcherInfo & getDispatchInfo() const
LocalConvexResult(const btCollisionObject *hitCollisionObject, LocalShapeInfo *localShapeInfo, const btVector3 &hitNormalLocal, const btVector3 &hitPointLocal, btScalar hitFraction)
void updateSingleAabb(btCollisionObject *colObj)
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...
RayResultCallback is used to report new raycast results.
virtual void debugDrawWorld()
The btDispatcher interface class can be used in combination with broadphase to dispatch calculations ...
void setInterpolate3(const btVector3 &v0, const btVector3 &v1, btScalar rt)
int m_collisionFilterMask
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)
static void objectQuerySingleInternal(const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionObjectWrapper *colObjWrap, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
ClosestRayResultCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld)
float btScalar
The btScalar type abstracts floating point numbers, to easily switch between double and single floati...
AllHitsRayResultCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld)
btVector3 m_hitNormalWorld