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 
                {

_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs

Reply via email to