add MultiDofDemo (Featherstone 3DOF spherical joint)

minor prettify of BasicDemo,RagdollDemo.
require 'multiDof' argument in btMultiBody.h (not default=false)
This commit is contained in:
Erwin Coumans
2014-01-10 16:34:39 -08:00
parent a8e60b4ee5
commit 7e4b1c1c8a
9 changed files with 481 additions and 28 deletions

View File

@@ -54,19 +54,19 @@ m_pickedConstraint(0),
m_pickingMultiBodyPoint2Point(0)
{
m_config = 0;
m_collisionConfiguration = 0;
m_dispatcher = 0;
m_bp = 0;
m_broadphase = 0;
m_solver = 0;
m_dynamicsWorld = 0;
}
void Bullet2MultiBodyDemo::initPhysics()
{
m_config = new btDefaultCollisionConfiguration;
m_dispatcher = new btCollisionDispatcher(m_config);
m_bp = new btDbvtBroadphase();
m_collisionConfiguration = new btDefaultCollisionConfiguration;
m_dispatcher = new btCollisionDispatcher(m_collisionConfiguration);
m_broadphase = new btDbvtBroadphase();
m_solver = new btMultiBodyConstraintSolver();
m_dynamicsWorld = new btMultiBodyDynamicsWorld(m_dispatcher,m_bp,m_solver,m_config);
m_dynamicsWorld = new btMultiBodyDynamicsWorld(m_dispatcher,m_broadphase,m_solver,m_collisionConfiguration);
}
void Bullet2MultiBodyDemo::exitPhysics()
@@ -75,19 +75,19 @@ void Bullet2MultiBodyDemo::exitPhysics()
m_dynamicsWorld=0;
delete m_solver;
m_solver=0;
delete m_bp;
m_bp=0;
delete m_broadphase;
m_broadphase=0;
delete m_dispatcher;
m_dispatcher=0;
delete m_config;
m_config=0;
delete m_collisionConfiguration;
m_collisionConfiguration=0;
}
Bullet2MultiBodyDemo::~Bullet2MultiBodyDemo()
{
btAssert(m_config == 0);
btAssert(m_collisionConfiguration == 0);
btAssert(m_dispatcher == 0);
btAssert(m_bp == 0);
btAssert(m_broadphase == 0);
btAssert(m_solver == 0);
btAssert(m_dynamicsWorld == 0);
}
@@ -333,7 +333,8 @@ btMultiBody* FeatherstoneDemo1::createFeatherstoneMultiBody(class btMultiBodyDyn
btVector3 inertia = btVector3 (91,344,253)*scaling*scaling;
btMultiBody * bod = new btMultiBody(n_links, mass, inertia, settings.m_isFixedBase, settings.m_canSleep);
bool isMultiDof = false;
btMultiBody * bod = new btMultiBody(n_links, mass, inertia, settings.m_isFixedBase, settings.m_canSleep, isMultiDof);
// bod->setHasSelfCollision(false);
//btQuaternion orn(btVector3(0,0,1),-0.25*SIMD_HALF_PI);//0,0,0,1);
@@ -770,7 +771,8 @@ public:
bool isFixedBase = true;
bool canSleep = true;
btMultiBody * bod = new btMultiBody(n_links, mass, localInertia, isFixedBase, canSleep);
bool isMultiDof = false;
btMultiBody * bod = new btMultiBody(n_links, mass, localInertia, isFixedBase, canSleep, isMultiDof);
btTransform tr;
tr = offset*transform;