diff options
author | Campbell Barton <ideasman42@gmail.com> | 2012-02-06 02:13:10 +0400 |
---|---|---|
committer | Campbell Barton <ideasman42@gmail.com> | 2012-02-06 02:13:10 +0400 |
commit | 3937ec7d11996438c2c6bd65d1d88f72431b1d52 (patch) | |
tree | e0a2104d51f1a44de88047a0e9d17d8492b343b1 /source/gameengine | |
parent | 11d5a2d2eba127e2f8502e570addb08c22cbb9c1 (diff) | |
parent | 8f3170a17c270dd8a02f9b3bf2a971a65cab67ae (diff) |
svn merge ^/trunk/blender -r43887:43918
Diffstat (limited to 'source/gameengine')
-rw-r--r-- | source/gameengine/Physics/Bullet/CcdPhysicsController.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp index d1e80226cd4..a22122a245e 100644 --- a/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp +++ b/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp @@ -231,6 +231,8 @@ bool CcdPhysicsController::CreateSoftbody() if (trimeshshape->getMeshInterface()->getNumSubParts()==1) { unsigned char* vertexBase; + btScalar* scaledVertexBase; + btVector3 localScaling; PHY_ScalarType vertexType; int numverts; int vertexstride; @@ -238,8 +240,16 @@ bool CcdPhysicsController::CreateSoftbody() int indexstride; PHY_ScalarType indexType; trimeshshape->getMeshInterface()->getLockedVertexIndexBase(&vertexBase,numverts,vertexType,vertexstride,&indexbase,indexstride,numtris,indexType); - - psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,(const btScalar*)vertexBase,(const int*)indexbase,numtris,false); + localScaling = scaledtrimeshshape->getLocalScaling(); + scaledVertexBase = new btScalar[numverts*3]; + for (int i=0; i<numverts*3; i+=3) + { + scaledVertexBase[i] = ((const btScalar*)vertexBase)[i] * localScaling.getX(); + scaledVertexBase[i+1] = ((const btScalar*)vertexBase)[i+1] * localScaling.getY(); + scaledVertexBase[i+2] = ((const btScalar*)vertexBase)[i+2] * localScaling.getZ(); + } + psb = btSoftBodyHelpers::CreateFromTriMesh(worldInfo,scaledVertexBase,(const int*)indexbase,numtris,false); + delete [] scaledVertexBase; } } else { |