void AddRigidBodies() {
	//add the falling box 
	{
	hkVector4 halfExtents(0.5f, 0.5f, 0.125f);
		hkpBoxShape* boxShape = new hkpBoxShape(halfExtents);
		boxShape->setRadius(0.001f);

		hkpRigidBodyCinfo ci;
		ci.m_shape = boxShape;
		ci.m_motionType = hkpMotion::MOTION_DYNAMIC;
		const hkReal boxMass(10.0f);
		hkMassProperties massProps;
		hkpInertiaTensorComputer::computeShapeVolumeMassProperties(boxShape, boxMass, massProps);
		ci.setMassProperties(massProps);
				
		for(int i=0;i<MAX_BOXES;++i) {
			if(i==(MAX_BOXES-1))
				ci.m_motionType = hkpMotion::MOTION_FIXED;
			ci.m_position = hkVector4(0.0f,1.0f+i*1.125f,0.0f);	
			hkpRigidBody* rigidBody = new hkpRigidBody(ci);			
			boxes.push_back(static_cast<hkpRigidBody*>(g_pWorld->addEntity(rigidBody))); 
		}		
		boxShape->removeReference();

		//now add springs between adjacent boxes
		hkpStiffSpringConstraintData* spring = new hkpStiffSpringConstraintData(); 
		hkpStiffSpringConstraintData* spring2 = new hkpStiffSpringConstraintData(); 

		for(size_t i=0;i<boxes.size()-1;i++) {
			hkTransform b1 = boxes[i]->getTransform();
			hkTransform b2 = boxes[i+1]->getTransform();
			hkVector4f t1 = b1.getTranslation(); 
			hkVector4f t2 = b2.getTranslation();
			t1.add(hkVector4f(-0.5,0.5,0));
			t2.add(hkVector4f(-0.5,-0.5,0));

			spring->setInWorldSpace(b1,b2, t1, t2);
			{
				hkpConstraintInstance* constraint = new hkpConstraintInstance(boxes[i], boxes[i+1], spring );
					g_pWorld->addConstraint(constraint);
				constraint->removeReference(); 
			}


			t1.add(hkVector4f(1,0,0));
			t2.add(hkVector4f(1,0,0));

			spring2->setInWorldSpace(b1,b2, t1, t2);
			{
				hkpConstraintInstance* constraint = new hkpConstraintInstance(boxes[i], boxes[i+1], spring2 );
					g_pWorld->addConstraint(constraint);
				constraint->removeReference(); 
			}
		}
		spring->removeReference();
		spring2->removeReference(); 
	}

	//create the static box where the smaller box will fall
	{
		hkVector4 halfExtents(20.0f, 2.0f, 20.f);
		hkpBoxShape* boxShape = new hkpBoxShape(halfExtents);
		hkpRigidBodyCinfo ci;
		ci.m_shape = boxShape;
		ci.m_position = hkVector4(0, -2, 0);
		ci.m_motionType = hkpMotion::MOTION_FIXED;
		boxShape->setRadius(0.001f);
		hkpRigidBody* rigidBody = new hkpRigidBody(ci);
		boxShape->removeReference();
		g_pWorld->addEntity(rigidBody)->removeReference();
	}
}