diff --git a/Demos/CharacterDemo/CharacterDemo.cpp b/Demos/CharacterDemo/CharacterDemo.cpp index cddd22196..68445dc6d 100644 --- a/Demos/CharacterDemo/CharacterDemo.cpp +++ b/Demos/CharacterDemo/CharacterDemo.cpp @@ -75,7 +75,9 @@ void CharacterDemo::initPhysics() btTransform startTransform; startTransform.setIdentity (); - startTransform.setOrigin (btVector3(0.0, 4.0, 0.0)); + //startTransform.setOrigin (btVector3(0.0, 4.0, 0.0)); + startTransform.setOrigin (btVector3(10.210098,-1.6433364,16.453260)); + m_ghostObject = new btPairCachingGhostObject(); m_ghostObject->setWorldTransform(startTransform); @@ -340,7 +342,8 @@ void CharacterDemo::clientResetScene() m_character->reset (); ///WTF - m_character->warp (btVector3(0, -2.0, 0.)); + m_character->warp (btVector3(10.210001,-2.0306311,16.576973)); + } void CharacterDemo::specialKeyboardUp(int key, int x, int y) diff --git a/Demos/OpenGL/GL_DialogDynamicsWorld.cpp b/Demos/OpenGL/GL_DialogDynamicsWorld.cpp index 38b447b06..16cc3a529 100644 --- a/Demos/OpenGL/GL_DialogDynamicsWorld.cpp +++ b/Demos/OpenGL/GL_DialogDynamicsWorld.cpp @@ -236,6 +236,7 @@ GL_SliderControl* GL_DialogDynamicsWorld::createSlider(GL_DialogWindow* dialog, body->setAngularFactor(btVector3(0,0,0)); m_dynamicsWorld->addRigidBody(body); + body->setCollisionFlags(body->getFlags()|btCollisionObject::CF_NO_CONTACT_RESPONSE); btRigidBody* dialogBody = btRigidBody::upcast(dialog->getCollisionObject()); btAssert(dialogBody); @@ -299,6 +300,7 @@ GL_ToggleControl* GL_DialogDynamicsWorld::createToggle(GL_DialogWindow* dialog, body->setAngularFactor(btVector3(0,0,0)); m_dynamicsWorld->addRigidBody(body); + body->setCollisionFlags(body->getFlags()|btCollisionObject::CF_NO_CONTACT_RESPONSE); btRigidBody* dialogBody = btRigidBody::upcast(dialog->getCollisionObject()); btAssert(dialogBody); diff --git a/src/BulletCollision/CollisionShapes/btCapsuleShape.h b/src/BulletCollision/CollisionShapes/btCapsuleShape.h index 19541a4ff..ab763abf8 100644 --- a/src/BulletCollision/CollisionShapes/btCapsuleShape.h +++ b/src/BulletCollision/CollisionShapes/btCapsuleShape.h @@ -43,6 +43,18 @@ public: virtual void batchedUnitVectorGetSupportingVertexWithoutMargin(const btVector3* vectors,btVector3* supportVerticesOut,int numVectors) const; + virtual void setMargin(btScalar collisionMargin) + { + //correct the m_implicitShapeDimensions for the margin + btVector3 oldMargin(getMargin(),getMargin(),getMargin()); + btVector3 implicitShapeDimensionsWithMargin = m_implicitShapeDimensions+oldMargin; + + btConvexInternalShape::setMargin(collisionMargin); + btVector3 newMargin(getMargin(),getMargin(),getMargin()); + m_implicitShapeDimensions = implicitShapeDimensionsWithMargin - newMargin; + + } + virtual void getAabb (const btTransform& t, btVector3& aabbMin, btVector3& aabbMax) const { btVector3 halfExtents(getRadius(),getRadius(),getRadius());