69#ifndef BT_COLLISION_WORLD_H
70#define BT_COLLISION_WORLD_H
179 const btVector3& hitNormalLocal,
253 if (normalInWorldSpace)
288 btVector3 hitNormalWorld;
289 if (normalInWorldSpace)
299 btVector3 hitPointWorld;
311 const btVector3& hitNormalLocal,
312 const btVector3& hitPointLocal,
385 if (normalInWorldSpace)
434 virtual void rayTest(
const btVector3& rayFromWorld,
const btVector3& rayToWorld, RayResultCallback& resultCallback)
const;
442 void contactTest(btCollisionObject* colObj, ContactResultCallback& resultCallback);
446 void contactPairTest(btCollisionObject* colObjA, btCollisionObject* colObjB, ContactResultCallback& resultCallback);
452 btCollisionObject* collisionObject,
455 RayResultCallback& resultCallback);
459 RayResultCallback& resultCallback);
463 btCollisionObject* collisionObject,
466 ConvexResultCallback& resultCallback,
btScalar allowedPenetration);
470 ConvexResultCallback& resultCallback,
btScalar allowedPenetration);
472 virtual void addCollisionObject(btCollisionObject* collisionObject,
int collisionFilterGroup = btBroadphaseProxy::DefaultFilter,
int collisionFilterMask = btBroadphaseProxy::AllFilter);
btCollisionShape
The btCollisionShape class provides an interface for collision shapes that can be shared among btColl...
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...
SIMD_FORCE_INLINE int size() const
return the number of elements in the array
SIMD_FORCE_INLINE void push_back(const T &_Val)
virtual btOverlappingPairCache * getOverlappingPairCache()=0
CollisionWorld is interface and container for the collision detection.
virtual void rayTest(const btVector3 &rayFromWorld, const btVector3 &rayToWorld, RayResultCallback &resultCallback) const
virtual void updateAabbs()
btDispatcherInfo m_dispatchInfo
btDispatcher * getDispatcher()
btDispatcherInfo & getDispatchInfo()
virtual void serialize(btSerializer *serializer)
Preliminary serialization test for Bullet 2.76. Loading those files requires a separate parser (Bulle...
virtual void debugDrawWorld()
btOverlappingPairCache * getPairCache()
static void objectQuerySingleInternal(const btConvexShape *castShape, const btTransform &convexFromTrans, const btTransform &convexToTrans, const btCollisionObjectWrapper *colObjWrap, ConvexResultCallback &resultCallback, btScalar allowedPenetration)
virtual btIDebugDraw * getDebugDrawer()
virtual ~btCollisionWorld()
virtual void refreshBroadphaseProxy(btCollisionObject *collisionObject)
btBroadphaseInterface * m_broadphasePairCache
void updateSingleAabb(btCollisionObject *colObj)
void setForceUpdateAllAabbs(bool forceUpdateAllAabbs)
virtual void removeCollisionObject(btCollisionObject *collisionObject)
virtual void addCollisionObject(btCollisionObject *collisionObject, int collisionFilterGroup=btBroadphaseProxy::DefaultFilter, int collisionFilterMask=btBroadphaseProxy::AllFilter)
btAlignedObjectArray< btCollisionObject * > m_collisionObjects
virtual void setDebugDrawer(btIDebugDraw *debugDrawer)
btCollisionWorld(btDispatcher *dispatcher, btBroadphaseInterface *broadphasePairCache, btCollisionConfiguration *collisionConfiguration)
for debug drawing
int getNumCollisionObjects() const
virtual void performDiscreteCollisionDetection()
btCollisionObjectArray & getCollisionObjectArray()
static void rayTestSingleInternal(const btTransform &rayFromTrans, const btTransform &rayToTrans, const btCollisionObjectWrapper *collisionObjectWrap, RayResultCallback &resultCallback)
const btCollisionObjectArray & getCollisionObjectArray() const
void convexSweepTest(const btConvexShape *castShape, const btTransform &from, const btTransform &to, ConvexResultCallback &resultCallback, btScalar allowedCcdPenetration=btScalar(0.)) const
bool m_forceUpdateAllAabbs
const btDispatcherInfo & getDispatchInfo() const
btIDebugDraw * m_debugDrawer
btBroadphaseInterface * getBroadphase()
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....
btDispatcher * m_dispatcher1
void contactPairTest(btCollisionObject *colObjA, btCollisionObject *colObjB, ContactResultCallback &resultCallback)
void serializeContactManifolds(btSerializer *serializer)
const btDispatcher * getDispatcher() const
bool getForceUpdateAllAabbs() const
virtual void debugDrawObject(const btTransform &worldTransform, const btCollisionShape *shape, const btVector3 &color)
static void rayTestSingle(const btTransform &rayFromTrans, const btTransform &rayToTrans, btCollisionObject *collisionObject, const btCollisionShape *collisionShape, const btTransform &colObjWorldTransform, RayResultCallback &resultCallback)
void setBroadphase(btBroadphaseInterface *pairCache)
const btBroadphaseInterface * getBroadphase() const
void contactTest(btCollisionObject *colObj, ContactResultCallback &resultCallback)
void serializeCollisionObjects(btSerializer *serializer)
virtual void computeOverlappingPairs()
draw_view push_constant(Type::INT, "radiance_src") .push_constant(Type capture_info_buf storage_buf(1, Qualifier::READ, "ObjectBounds", "bounds_buf[]") .push_constant(Type draw_view int
AllHitsRayResultCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld)
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)
btAlignedObjectArray< const btCollisionObject * > m_collisionObjects
btAlignedObjectArray< btScalar > m_hitFractions
btAlignedObjectArray< btVector3 > m_hitPointWorld
btAlignedObjectArray< btVector3 > m_hitNormalWorld
btVector3 m_hitNormalWorld
const btCollisionObject * m_hitCollisionObject
btVector3 m_convexToWorld
virtual btScalar addSingleResult(LocalConvexResult &convexResult, bool normalInWorldSpace)
ClosestConvexResultCallback(const btVector3 &convexFromWorld, const btVector3 &convexToWorld)
btVector3 m_hitPointWorld
btVector3 m_convexFromWorld
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)
ClosestRayResultCallback(const btVector3 &rayFromWorld, const btVector3 &rayToWorld)
btVector3 m_hitPointWorld
btVector3 m_hitNormalWorld
RayResultCallback is used to report new raycast results.
int m_collisionFilterMask
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
int m_collisionFilterGroup
btScalar m_closestHitFraction
virtual btScalar addSingleResult(LocalConvexResult &convexResult, bool normalInWorldSpace)=0
virtual ~ConvexResultCallback()
btVector3 m_hitPointLocal
LocalShapeInfo * m_localShapeInfo
btVector3 m_hitNormalLocal
const btCollisionObject * m_hitCollisionObject
LocalConvexResult(const btCollisionObject *hitCollisionObject, LocalShapeInfo *localShapeInfo, const btVector3 &hitNormalLocal, const btVector3 &hitPointLocal, btScalar hitFraction)
LocalShapeInfo * m_localShapeInfo
const btCollisionObject * m_collisionObject
LocalRayResult(const btCollisionObject *collisionObject, LocalShapeInfo *localShapeInfo, const btVector3 &hitNormalLocal, btScalar hitFraction)
btVector3 m_hitNormalLocal
RayResultCallback is used to report new raycast results.
btScalar m_closestHitFraction
int m_collisionFilterMask
virtual bool needsCollision(btBroadphaseProxy *proxy0) const
virtual btScalar addSingleResult(LocalRayResult &rayResult, bool normalInWorldSpace)=0
int m_collisionFilterGroup
const btCollisionObject * m_collisionObject
virtual ~RayResultCallback()