[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