Changeset View
Changeset View
Standalone View
Standalone View
extern/bullet2/src/BulletSoftBody/btSoftSoftCollisionAlgorithm.h
| Show All 21 Lines | |||||
| #include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" | #include "BulletCollision/CollisionDispatch/btCollisionCreateFunc.h" | ||||
| class btPersistentManifold; | class btPersistentManifold; | ||||
| class btSoftBody; | class btSoftBody; | ||||
| ///collision detection between two btSoftBody shapes | ///collision detection between two btSoftBody shapes | ||||
| class btSoftSoftCollisionAlgorithm : public btCollisionAlgorithm | class btSoftSoftCollisionAlgorithm : public btCollisionAlgorithm | ||||
| { | { | ||||
| bool m_ownManifold; | bool m_ownManifold; | ||||
| btPersistentManifold* m_manifoldPtr; | btPersistentManifold* m_manifoldPtr; | ||||
| btSoftBody* m_softBody0; | // btSoftBody* m_softBody0; | ||||
| btSoftBody* m_softBody1; | // btSoftBody* m_softBody1; | ||||
| public: | public: | ||||
| btSoftSoftCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) | btSoftSoftCollisionAlgorithm(const btCollisionAlgorithmConstructionInfo& ci) | ||||
| : btCollisionAlgorithm(ci) {} | : btCollisionAlgorithm(ci) {} | ||||
| virtual void processCollision (const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); | virtual void processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut); | ||||
| virtual btScalar calculateTimeOfImpact(btCollisionObject* body0,btCollisionObject* body1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut); | virtual btScalar calculateTimeOfImpact(btCollisionObject* body0, btCollisionObject* body1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut); | ||||
| virtual void getAllContactManifolds(btManifoldArray& manifoldArray) | virtual void getAllContactManifolds(btManifoldArray& manifoldArray) | ||||
| { | { | ||||
| if (m_manifoldPtr && m_ownManifold) | if (m_manifoldPtr && m_ownManifold) | ||||
| manifoldArray.push_back(m_manifoldPtr); | manifoldArray.push_back(m_manifoldPtr); | ||||
| } | } | ||||
| btSoftSoftCollisionAlgorithm(btPersistentManifold* mf,const btCollisionAlgorithmConstructionInfo& ci,const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap); | btSoftSoftCollisionAlgorithm(btPersistentManifold* mf, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap); | ||||
| virtual ~btSoftSoftCollisionAlgorithm(); | virtual ~btSoftSoftCollisionAlgorithm(); | ||||
| struct CreateFunc :public btCollisionAlgorithmCreateFunc | struct CreateFunc : public btCollisionAlgorithmCreateFunc | ||||
| { | { | ||||
| virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap) | virtual btCollisionAlgorithm* CreateCollisionAlgorithm(btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap) | ||||
| { | { | ||||
| int bbsize = sizeof(btSoftSoftCollisionAlgorithm); | int bbsize = sizeof(btSoftSoftCollisionAlgorithm); | ||||
| void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); | void* ptr = ci.m_dispatcher1->allocateCollisionAlgorithm(bbsize); | ||||
| return new(ptr) btSoftSoftCollisionAlgorithm(0,ci,body0Wrap,body1Wrap); | return new (ptr) btSoftSoftCollisionAlgorithm(0, ci, body0Wrap, body1Wrap); | ||||
| } | } | ||||
| }; | }; | ||||
| }; | }; | ||||
| #endif //BT_SOFT_SOFT_COLLISION_ALGORITHM_H | #endif //BT_SOFT_SOFT_COLLISION_ALGORITHM_H | ||||