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_SOFT_COLLISION_ALGORITHM_H
00017 #define BT_SOFT_SOFT_COLLISION_ALGORITHM_H
00018
00019 #include "BulletCollision/BroadphaseCollision/btCollisionAlgorithm.h"
00020 #include "BulletCollision/BroadphaseCollision/btBroadphaseProxy.h"
00021 #include "BulletCollision/BroadphaseCollision/btDispatcher.h"
00022 #include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h"
00023
00024 class btPersistentManifold;
00025 class btSoftBody;
00026
00028 class btSoftSoftCollisionAlgorithm : public btCollisionAlgorithm
00029 {
00030 bool m_ownManifold;
00031 btPersistentManifold* m_manifoldPtr;
00032
00033 btSoftBody* m_softBody0;
00034 btSoftBody* m_softBody1;
00035
00036
00037 public:
00038 btSoftSoftCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci)
00039 : btCollisionAlgorithm(ci) {}
00040
00041 virtual void processCollision (btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00042
00043 virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut);
00044
00045 virtual void getAllContactManifolds(btManifoldArray& manifoldArray)
00046 {
00047 if (m_manifoldPtr && m_ownManifold)
00048 manifoldArray.push_back(m_manifoldPtr);
00049 }
00050
00051 btSoftSoftCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,btCollisionObject* body0,btCollisionObject* body1);
00052
00053 virtual ~btSoftSoftCollisionAlgorithm();
00054
00055 struct CreateFunc :public btCollisionAlgorithmCreateFunc
00056 {
00057 virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, btCollisionObject* body0,btCollisionObject* body1)
00058 {
00059 int bbsize = sizeof(btSoftSoftCollisionAlgorithm);
00060 void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize);
00061 return new(ptr) btSoftSoftCollisionAlgorithm(0,ci,body0,body1);
00062 }
00063 };
00064
00065 };
00066
00067 #endif //BT_SOFT_SOFT_COLLISION_ALGORITHM_H
00068
00069