From 4941107f927c3717a113b82463193caae0022d8c Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Fri, 1 Dec 2006 01:04:27 +0000 Subject: - enabled compound collision objects, requires 'clear parent inverse' - fixed some issues with kinematic objects, introduced during Bullet 2.x upgrade --- source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 3 ++- source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp | 5 ++++- 2 files changed, 6 insertions(+), 2 deletions(-) (limited to 'source/gameengine/Physics') diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index 33b0e986a32..f6a087887f9 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -126,7 +126,8 @@ void CcdPhysicsController::CreateRigidbody() //setMassProps this also sets collisionFlags //convert collision flags! -// m_body->m_collisionFlags = m_cci.m_collisionFlags; + + m_body->setCollisionFlags(m_body->getCollisionFlags() | m_cci.m_collisionFlags); m_body->setGravity( m_cci.m_gravity); m_body->setDamping(m_cci.m_linearDamping, m_cci.m_angularDamping); diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp index b951602fe1e..37eb0ef76e3 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsEnvironment.cpp @@ -814,6 +814,8 @@ void CcdPhysicsEnvironment::addSensor(PHY_IPhysicsController* ctrl) { addCcdPhysicsController(ctrl1); } + //force collision detection with everything, including static objects (might hurt performance!) + ctrl1->GetRigidBody()->getBroadphaseHandle()->m_collisionFilterMask = btBroadphaseProxy::AllFilter; requestCollisionCallback(ctrl); //printf("addSensor\n"); @@ -970,7 +972,7 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::CreateSphereController(float radi cinfo.m_collisionShape = new btSphereShape(radius); cinfo.m_MotionState = 0; cinfo.m_physicsEnv = this; - cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE; + cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE | btCollisionObject::CF_KINEMATIC_OBJECT; DefaultMotionState* motionState = new DefaultMotionState(); cinfo.m_MotionState = motionState; motionState->m_worldTransform.setIdentity(); @@ -1153,6 +1155,7 @@ PHY_IPhysicsController* CcdPhysicsEnvironment::CreateConeController(float conera cinfo.m_collisionShape = new btConeShape(coneradius,coneheight); cinfo.m_MotionState = 0; cinfo.m_physicsEnv = this; + cinfo.m_collisionFlags |= btCollisionObject::CF_NO_CONTACT_RESPONSE; DefaultMotionState* motionState = new DefaultMotionState(); cinfo.m_MotionState = motionState; motionState->m_worldTransform.setIdentity(); -- cgit v1.2.3