Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016 #include "btSoftRigidCollisionAlgorithm.h"
00017 #include "BulletCollision/CollisionDispatch/btCollisionDispatcher.h"
00018 #include "BulletCollision/CollisionShapes/btSphereShape.h"
00019 #include "BulletCollision/CollisionShapes/btBoxShape.h"
00020 #include "BulletCollision/CollisionDispatch/btCollisionObject.h"
00021 #include "btSoftBody.h"
00022 #include "BulletSoftBody/btSoftBodySolvers.h"
00023 #include "BulletCollision/CollisionDispatch/btCollisionObjectWrapper.h"
00024
00027
00028
00029
00030 btSoftRigidCollisionAlgorithm::btSoftRigidCollisionAlgorithm(btPersistentManifold* ,const btCollisionAlgorithmConstructionInfo& ci,const btCollisionObjectWrapper* ,const btCollisionObjectWrapper* , bool isSwapped)
00031 : btCollisionAlgorithm(ci),
00032
00033
00034 m_isSwapped(isSwapped)
00035 {
00036 }
00037
00038
00039 btSoftRigidCollisionAlgorithm::~btSoftRigidCollisionAlgorithm()
00040 {
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 }
00052
00053
00054 #include <stdio.h>
00055
00056 void btSoftRigidCollisionAlgorithm::processCollision (const btCollisionObjectWrapper* body0Wrap,const btCollisionObjectWrapper* body1Wrap,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut)
00057 {
00058 (void)dispatchInfo;
00059 (void)resultOut;
00060
00061
00062
00063 btSoftBody* softBody = m_isSwapped? (btSoftBody*)body1Wrap->getCollisionObject() : (btSoftBody*)body0Wrap->getCollisionObject();
00064 const btCollisionObjectWrapper* rigidCollisionObjectWrap = m_isSwapped? body0Wrap : body1Wrap;
00065
00066 if (softBody->m_collisionDisabledObjects.findLinearSearch(rigidCollisionObjectWrap->getCollisionObject())==softBody->m_collisionDisabledObjects.size())
00067 {
00068 softBody->getSoftBodySolver()->processCollision(softBody, rigidCollisionObjectWrap);
00069 }
00070
00071
00072 }
00073
00074 btScalar btSoftRigidCollisionAlgorithm::calculateTimeOfImpact(btCollisionObject* col0,btCollisionObject* col1,const btDispatcherInfo& dispatchInfo,btManifoldResult* resultOut)
00075 {
00076 (void)resultOut;
00077 (void)dispatchInfo;
00078 (void)col0;
00079 (void)col1;
00080
00081
00082 return btScalar(1.);
00083 }
00084
00085
00086