added compount shape to soft body demo

This commit is contained in:
erwin.coumans
2008-05-18 01:51:10 +00:00
parent 6a69fe7f3b
commit e7aa93af36

View File

@@ -31,7 +31,6 @@ subject to the following restrictions:
#include "BulletSoftBody/btSoftBodyRigidBodyCollisionConfiguration.h"
#include "BulletSoftBody/btSoftBodyHelpers.h"
static float gCollisionMargin = 0.05f/*0.05f*/;
#include "SoftDemo.h"
#include "GL_ShapeDrawer.h"
@@ -267,16 +266,29 @@ static inline btVector3 Vector3Rand()
static void Ctor_RbUpStack(SoftDemo* pdemo,int count)
{
float mass=10;
btCompoundShape* cylinderCompound = new btCompoundShape;
btCollisionShape* cylinderShape = new btCylinderShapeX(btVector3(4,1,1));
btCollisionShape* boxShape = new btBoxShape(btVector3(4,1,1));
btTransform localTransform;
localTransform.setIdentity();
cylinderCompound->addChildShape(localTransform,boxShape);
btQuaternion orn(SIMD_HALF_PI,0,0);
localTransform.setRotation(orn);
// localTransform.setOrigin(btVector3(1,1,1));
cylinderCompound->addChildShape(localTransform,cylinderShape);
btCollisionShape* shape[]={ new btSphereShape(1.5),
new btBoxShape(btVector3(1,1,1)),
new btCylinderShapeX(btVector3(4,1,1))};
cylinderCompound};
static const int nshapes=sizeof(shape)/sizeof(shape[0]);
for(int i=0;i<count;++i)
{
btTransform startTransform;
startTransform.setIdentity();
startTransform.setOrigin(btVector3(0,1+6*i,0));
btRigidBody* body=pdemo->localCreateRigidBody(mass,startTransform,shape[i%nshapes]);
pdemo->localCreateRigidBody(mass,startTransform,shape[i%nshapes]);
}
}
@@ -288,7 +300,7 @@ static void Ctor_BigBall(SoftDemo* pdemo,btScalar mass=10)
btTransform startTransform;
startTransform.setIdentity();
startTransform.setOrigin(btVector3(0,13,0));
btRigidBody* body=pdemo->localCreateRigidBody(mass,startTransform,new btSphereShape(3));
pdemo->localCreateRigidBody(mass,startTransform,new btSphereShape(3));
}
//
@@ -447,7 +459,7 @@ static void Init_Impact(SoftDemo* pdemo)
btTransform startTransform;
startTransform.setIdentity();
startTransform.setOrigin(btVector3(0,20,0));
btRigidBody* body=pdemo->localCreateRigidBody(10,startTransform,new btBoxShape(btVector3(2,2,2)));
pdemo->localCreateRigidBody(10,startTransform,new btBoxShape(btVector3(2,2,2)));
}
//
@@ -1160,8 +1172,17 @@ void SoftDemo::initPhysics()
m_collisionShapes.push_back(new btBoxShape (btVector3(200,CUBE_HALF_EXTENTS,200)));
m_collisionShapes.push_back(new btCylinderShape (btVector3(CUBE_HALF_EXTENTS,CUBE_HALF_EXTENTS,CUBE_HALF_EXTENTS)));
btCompoundShape* cylinderCompound = new btCompoundShape;
btCollisionShape* cylinderShape = new btCylinderShape (btVector3(CUBE_HALF_EXTENTS,CUBE_HALF_EXTENTS,CUBE_HALF_EXTENTS));
btTransform localTransform;
localTransform.setIdentity();
cylinderCompound->addChildShape(localTransform,cylinderShape);
btQuaternion orn(btVector3(0,1,0),SIMD_PI);
localTransform.setRotation(orn);
cylinderCompound->addChildShape(localTransform,cylinderShape);
m_collisionShapes.push_back(cylinderCompound);
m_dispatcher=0;
@@ -1211,7 +1232,7 @@ void SoftDemo::initPhysics()
btRigidBody* body = localCreateRigidBody(0.f,tr,m_collisionShapes[0]);
localCreateRigidBody(0.f,tr,m_collisionShapes[0]);
// clientResetScene();