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_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H
00017 #define BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H
00018
00019 #include "BulletCollision/CollisionDispatch/btActivatingCollisionAlgorithm.h"
00020 #include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
00021 #include "BulletCollision/BroadphaseCollision/btDispatcher.h"
00022 #include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
00023
00024 class btPersistentManifold;
00025
00027 class btBox2dBox2dCollisionAlgorithm : public btActivatingCollisionAlgorithm
00028 {
00029 bool m_ownManifold;
00030 btPersistentManifold* m_manifoldPtr;
00031
00032 public:
00033 btBox2dBox2dCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)
00034 : btActivatingCollisionAlgorithm(ci) {}
00035
00036 virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00037
00038 virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00039
00040 btBox2dBox2dCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);
00041
00042 virtual ~btBox2dBox2dCollisionAlgorithm();
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
00053 struct CreateFunc :public btCollisionAlgorithmCreateFunc
00054 {
00055 virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
00056 {
00057 int bbsize = sizeof(btBox2dBox2dCollisionAlgorithm);
00058 void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);
00059 return new(ptr) btBox2dBox2dCollisionAlgorithm(0,ci,body0,body1);
00060 }
00061 };
00062
00063 };
00064
00065 #endif //BT_BOX_2D_BOX_2D__COLLISION_ALGORITHM_H
00066