[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43899] trunk/blender/source/gameengine/ Physics/Bullet/CcdPhysicsController.cpp: BGE bug #21947: Softbodies not using object size.
Benoit Bolsee
benoit.bolsee at online.be
Sun Feb 5 10:32:38 CET 2012
Revision: 43899
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43899
Author: ben2610
Date: 2012-02-05 09:32:35 +0000 (Sun, 05 Feb 2012)
Log Message:
-----------
BGE bug #21947: Softbodies not using object size. Fixed by scaling the shape before creating the soft body.
Modified Paths:
--------------
trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
Modified: trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp
===================================================================
--- trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp 2012-02-05 09:29:53 UTC (rev 43898)
+++ trunk/blender/source/gameengine/Physics/Bullet/CcdPhysicsController.cpp 2012-02-05 09:32:35 UTC (rev 43899)
@@ -231,6 +231,8 @@
if (trimeshshape->getMeshInterface()->getNumSubParts()==1)
{
unsigned char* vertexBase;
+ btScalar* scaledVertexBase;
+ btVector3 localScaling;
PHY_ScalarType vertexType;
int numverts;
int vertexstride;
@@ -238,8 +240,16 @@
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
{
More information about the Bf-blender-cvs
mailing list