Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #ifndef BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
00017 #define BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
00018
00019 #include "btActivatingCollisionAlgorithm.h"
00020 #include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
00021 #include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
00022 class btPersistentManifold;
00023 #include "btCollisionDispatcher.h"
00024
00028 class btSphereTriangleCollisionAlgorithm : public btActivatingCollisionAlgorithm
00029 {
00030 bool m_ownManifold;
00031 btPersistentManifold* m_manifoldPtr;
00032 bool m_swapped;
00033
00034 public:
00035 btSphereTriangleCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1,bool swapped);
00036
00037 btSphereTriangleCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)
00038 : btActivatingCollisionAlgorithm(ci) {}
00039
00040 virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00041
00042 virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00043
00044 virtual void getAllContactManifolds(btManifoldArray& manifoldArray)
00045 {
00046 if (m_manifoldPtr && m_ownManifold)
00047 {
00048 manifoldArray.push_back(m_manifoldPtr);
00049 }
00050 }
00051
00052 virtual ~btSphereTriangleCollisionAlgorithm();
00053
00054 struct CreateFunc :public btCollisionAlgorithmCreateFunc
00055 {
00056
00057 virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
00058 {
00059
00060 void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSphereTriangleCollisionAlgorithm));
00061
00062 return new(mem) btSphereTriangleCollisionAlgorithm(ci.m_manifold,ci,body0,body1,m_swapped);
00063 }
00064 };
00065
00066 };
00067
00068 #endif //BT_SPHERE_TRIANGLE_COLLISION_ALGORITHM_H
00069