From e33f5390dd6889e7b2cff0955e951025b88cb819 Mon Sep 17 00:00:00 2001 From: ejcoumans Date: Fri, 29 Jun 2007 19:37:30 +0000 Subject: [PATCH] added patch from Marten Svanfeld to pass collision filter group/mask in addRigidbody. --- Demos/EPAPenDepthDemo/Jamfile | 6 ++---- .../CollisionDispatch/btCollisionObject.cpp | 3 +++ .../CollisionDispatch/btCollisionObject.h | 1 + .../Dynamics/btDiscreteDynamicsWorld.cpp | 13 +++++++++++++ .../Dynamics/btDiscreteDynamicsWorld.h | 2 ++ 5 files changed, 21 insertions(+), 4 deletions(-) diff --git a/Demos/EPAPenDepthDemo/Jamfile b/Demos/EPAPenDepthDemo/Jamfile index b341af439..9337cde8d 100644 --- a/Demos/EPAPenDepthDemo/Jamfile +++ b/Demos/EPAPenDepthDemo/Jamfile @@ -6,18 +6,16 @@ SubDir TOP Demos EPAPenDepthDemo ; { Application $(<) : $(>) : noinstall console nomanifest ; - LinkWith $(<) : GIMPACTBullet GIMPACT bulletopenglsupport bulletdynamics bulletcollision bulletmath ; + LinkWith $(<) : GIMPACT bulletopenglsupport bulletdynamics bulletcollision bulletmath ; CFlags $(<) : [ FIncludes $(TOP)/Demos/OpenGL ] [ FIncludes $(TOP)/Extras/GIMPACT/include ] - [ FIncludes $(TOP)/Extras/GIMPACTBullet ] ; MsvcIncDirs $(<) : "../../Demos/OpenGL" - "../../Extras/GIMPACT/include" - "../../Extras/GIMPACTBullet" ; + "../../Extras/GIMPACT/include" ; } ExtraDemo4 EPAPenDepthDemo : [ Wildcard *.h *.cpp ] ; diff --git a/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp b/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp index b12b2ec6f..d4c0a4e8c 100644 --- a/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp +++ b/src/BulletCollision/CollisionDispatch/btCollisionObject.cpp @@ -30,6 +30,9 @@ btCollisionObject::btCollisionObject() } +btCollisionObject::~btCollisionObject() +{ +} void btCollisionObject::setActivationState(int newState) { diff --git a/src/BulletCollision/CollisionDispatch/btCollisionObject.h b/src/BulletCollision/CollisionDispatch/btCollisionObject.h index 9d29f43b6..9fb6a67c4 100644 --- a/src/BulletCollision/CollisionDispatch/btCollisionObject.h +++ b/src/BulletCollision/CollisionDispatch/btCollisionObject.h @@ -126,6 +126,7 @@ public: btCollisionObject(); + virtual ~btCollisionObject(); void setCollisionShape(btCollisionShape* collisionShape) { diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp index 0e7c2c4eb..29719ec9a 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.cpp @@ -327,6 +327,19 @@ void btDiscreteDynamicsWorld::addRigidBody(btRigidBody* body) } } +void btDiscreteDynamicsWorld::addRigidBody(btRigidBody* body, short group, short mask) +{ + if (!body->isStaticOrKinematicObject()) + { + body->setGravity(m_gravity); + } + + if (body->getCollisionShape()) + { + addCollisionObject(body,group,mask); + } +} + void btDiscreteDynamicsWorld::updateVehicles(btScalar timeStep) { diff --git a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h index e07894cdd..83b90bfee 100644 --- a/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h +++ b/src/BulletDynamics/Dynamics/btDiscreteDynamicsWorld.h @@ -132,6 +132,8 @@ public: virtual void addRigidBody(btRigidBody* body); + virtual void addRigidBody(btRigidBody* body, short group, short mask); + virtual void removeRigidBody(btRigidBody* body); void debugDrawObject(const btTransform& worldTransform, const btCollisionShape* shape, const btVector3& color);