Changeset View
Changeset View
Standalone View
Standalone View
extern/bullet2/src/BulletSoftBody/btSoftRigidCollisionAlgorithm.cpp
| Show All 21 Lines | |||||
| #include "BulletSoftBody/btSoftBodySolvers.h" | #include "BulletSoftBody/btSoftBodySolvers.h" | ||||
| #include "BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h" | #include "BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h" | ||||
| ///TODO: include all the shapes that the softbody can collide with | ///TODO: include all the shapes that the softbody can collide with | ||||
| ///alternatively, implement special case collision algorithms (just like for rigid collision shapes) | ///alternatively, implement special case collision algorithms (just like for rigid collision shapes) | ||||
| //#include <stdio.h> | //#include <stdio.h> | ||||
| btSoftRigidCollisionAlgorithm::btSoftRigidCollisionAlgorithm(btPersistentManifold* /*mf*/,const btCollisionAlgorithmConstructionInfo& ci,const btCollisionObjectWrapper* ,const btCollisionObjectWrapper* , bool isSwapped) | btSoftRigidCollisionAlgorithm::btSoftRigidCollisionAlgorithm(btPersistentManifold* /*mf*/, const btCollisionAlgorithmConstructionInfo& ci, const btCollisionObjectWrapper*, const btCollisionObjectWrapper*, bool isSwapped) | ||||
| : btCollisionAlgorithm(ci), | : btCollisionAlgorithm(ci), | ||||
| //m_ownManifold(false), | //m_ownManifold(false), | ||||
| //m_manifoldPtr(mf), | //m_manifoldPtr(mf), | ||||
| m_isSwapped(isSwapped) | m_isSwapped(isSwapped) | ||||
| { | { | ||||
| } | } | ||||
| btSoftRigidCollisionAlgorithm::~btSoftRigidCollisionAlgorithm() | btSoftRigidCollisionAlgorithm::~btSoftRigidCollisionAlgorithm() | ||||
| { | { | ||||
| //m_softBody->m_overlappingRigidBodies.remove(m_rigidCollisionObject); | //m_softBody->m_overlappingRigidBodies.remove(m_rigidCollisionObject); | ||||
| /*if (m_ownManifold) | /*if (m_ownManifold) | ||||
| { | { | ||||
| if (m_manifoldPtr) | if (m_manifoldPtr) | ||||
| m_dispatcher->releaseManifold(m_manifoldPtr); | m_dispatcher->releaseManifold(m_manifoldPtr); | ||||
| } | } | ||||
| */ | */ | ||||
| } | } | ||||
| #include <stdio.h> | #include <stdio.h> | ||||
| #include "LinearMath/btQuickprof.h" | |||||
| void btSoftRigidCollisionAlgorithm::processCollision (const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) | void btSoftRigidCollisionAlgorithm::processCollision(const btCollisionObjectWrapper* body0Wrap, const btCollisionObjectWrapper* body1Wrap, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut) | ||||
| { | { | ||||
| BT_PROFILE("btSoftRigidCollisionAlgorithm::processCollision"); | |||||
| (void)dispatchInfo; | (void)dispatchInfo; | ||||
| (void)resultOut; | (void)resultOut; | ||||
| //printf("btSoftRigidCollisionAlgorithm\n"); | //printf("btSoftRigidCollisionAlgorithm\n"); | ||||
| // const btCollisionObjectWrapper* softWrap = m_isSwapped?body1Wrap:body0Wrap; | // const btCollisionObjectWrapper* softWrap = m_isSwapped?body1Wrap:body0Wrap; | ||||
| // const btCollisionObjectWrapper* rigidWrap = m_isSwapped?body0Wrap:body1Wrap; | // const btCollisionObjectWrapper* rigidWrap = m_isSwapped?body0Wrap:body1Wrap; | ||||
| btSoftBody* softBody = m_isSwapped? (btSoftBody*)body1Wrap->getCollisionObject() : (btSoftBody*)body0Wrap->getCollisionObject(); | btSoftBody* softBody = m_isSwapped ? (btSoftBody*)body1Wrap->getCollisionObject() : (btSoftBody*)body0Wrap->getCollisionObject(); | ||||
| const btCollisionObjectWrapper* rigidCollisionObjectWrap = m_isSwapped? body0Wrap : body1Wrap; | const btCollisionObjectWrapper* rigidCollisionObjectWrap = m_isSwapped ? body0Wrap : body1Wrap; | ||||
| if (softBody->m_collisionDisabledObjects.findLinearSearch(rigidCollisionObjectWrap->getCollisionObject())==softBody->m_collisionDisabledObjects.size()) | if (softBody->m_collisionDisabledObjects.findLinearSearch(rigidCollisionObjectWrap->getCollisionObject()) == softBody->m_collisionDisabledObjects.size()) | ||||
| { | { | ||||
| softBody->getSoftBodySolver()->processCollision(softBody, rigidCollisionObjectWrap); | softBody->getSoftBodySolver()->processCollision(softBody, rigidCollisionObjectWrap); | ||||
| } | } | ||||
| } | } | ||||
| btScalar btSoftRigidCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut) | btScalar btSoftRigidCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0, btCollisionObject* col1, const btDispatcherInfo& dispatchInfo, btManifoldResult* resultOut) | ||||
| { | { | ||||
| (void)resultOut; | (void)resultOut; | ||||
| (void)dispatchInfo; | (void)dispatchInfo; | ||||
| (void)col0; | (void)col0; | ||||
| (void)col1; | (void)col1; | ||||
| //not yet | //not yet | ||||
| return btScalar(1.); | return btScalar(1.); | ||||
| } | } | ||||