[Bf-blender-cvs] [909d322] master: BGE : Fix Bullet shape margin for triangle mesh static objects
Porteries Tristan
noreply at git.blender.org
Tue May 12 13:39:09 CEST 2015
Commit: 909d3228b1d0254888d0c97d269e9ab2e315dba9
Author: Porteries Tristan
Date: Tue May 12 13:24:47 2015 +0200
Branches: master
https://developer.blender.org/rB909d3228b1d0254888d0c97d269e9ab2e315dba9
BGE : Fix Bullet shape margin for triangle mesh static objects
===================================================================
M source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
M source/gameengine/Physics/Bullet/CcdPhysicsController.h
===================================================================
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
index efa9065..ed23a45 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
@@ -2610,6 +2610,7 @@ btCollisionShape* CcdShapeConstructionInfo::CreateBulletShape(btScalar margin, b
}
btBvhTriangleMeshShape *unscaledShape = new btBvhTriangleMeshShape(m_triangleIndexVertexArray, true, useBvh);
+ unscaledShape->setMargin(margin);
collisionShape = new btScaledBvhTriangleMeshShape(unscaledShape, btVector3(1.0f, 1.0f, 1.0f));
collisionShape->setMargin(margin);
}
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.h b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
index 625713d..b1d3876 100644
--- a/source/gameengine/Physics/Bullet/CcdPhysicsController.h
+++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.h
@@ -657,8 +657,12 @@ protected:
virtual void CalcXform() {}
virtual void SetMargin(float margin)
{
- if (m_collisionShape)
- m_collisionShape->setMargin(btScalar(margin));
+ if (m_collisionShape) {
+ m_collisionShape->setMargin(margin);
+ // if the shape use a unscaled shape we have also to set the correct margin in it
+ if (m_collisionShape->getShapeType() == SCALED_TRIANGLE_MESH_SHAPE_PROXYTYPE)
+ ((btScaledBvhTriangleMeshShape *)m_collisionShape)->getChildShape()->setMargin(margin);
+ }
}
virtual float GetMargin() const
{
More information about the Bf-blender-cvs
mailing list