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_SOFT_RIGID_COLLISION_ALGORITHM_H
00017 #define BT_SOFT_RIGID_COLLISION_ALGORITHM_H
00018
00019 #include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"
00020 #include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
00021 #include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
00022 class btPersistentManifold;
00023 #include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"
00024
00025 #include "LinearMath/btVector3.h"
00026 class btSoftBody;
00027
00029 class btSoftRigidCollisionAlgorithm : public btCollisionAlgorithm
00030 {
00031
00032
00033
00034 btSoftBody* m_softBody;
00035 btCollisionObject* m_rigidCollisionObject;
00036
00038 bool m_isSwapped;
00039
00040 public:
00041
00042 btSoftRigidCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* col0,btCollisionObject* col1, bool isSwapped);
00043
00044 virtual ~btSoftRigidCollisionAlgorithm();
00045
00046 virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00047
00048 virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00049
00050 virtual void getAllContactManifolds(btManifoldArray& manifoldArray)
00051 {
00052
00053 }
00054
00055
00056 struct CreateFunc :public btCollisionAlgorithmCreateFunc
00057 {
00058 virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
00059 {
00060 void* mem = ci.m_dispatcher1->allocateCollisionAlgorithm(sizeof(btSoftRigidCollisionAlgorithm));
00061 if (!m_swapped)
00062 {
00063 return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,false);
00064 } else
00065 {
00066 return new(mem) btSoftRigidCollisionAlgorithm(0,ci,body0,body1,true);
00067 }
00068 }
00069 };
00070
00071 };
00072
00073 #endif //BT_SOFT_RIGID_COLLISION_ALGORITHM_H
00074
00075