Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2012-02-06 02:13:10 +0400
committerCampbell Barton <ideasman42@gmail.com>2012-02-06 02:13:10 +0400
commit3937ec7d11996438c2c6bd65d1d88f72431b1d52 (patch)
treee0a2104d51f1a44de88047a0e9d17d8492b343b1 /source/gameengine/Physics/Bullet
parent11d5a2d2eba127e2f8502e570addb08c22cbb9c1 (diff)
parent8f3170a17c270dd8a02f9b3bf2a971a65cab67ae (diff)
svn merge ^/trunk/blender -r43887:43918
Diffstat (limited to 'source/gameengine/Physics/Bullet')
-rw-r--r--source/gameengine/Physics/Bullet/CcdPhysicsController.cpp14
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
{