void Setup() { world = new btDiscreteDynamicsWorld(); world.setDebugDrawer( Program.Drawer ); btVector3 tmp; btVector3.yAxis.Add( ref btVector3.xAxis, out tmp ); tmp.normalized( out tmp ); btCollisionShape groundShape; if( sloped ) groundShape = new btStaticPlaneShape( ref btVector3.Zero, ref tmp ); else groundShape = new btStaticPlaneShape( ref btVector3.Zero, ref btVector3.yAxis ); btDefaultMotionState groundMotionState = new btDefaultMotionState(); btRigidBody.btRigidBodyConstructionInfo groundRigidBodyCI = new btRigidBody.btRigidBodyConstructionInfo( 0, groundMotionState , groundShape, ref btVector3.Zero ); btRigidBody groundRigidBody = new btRigidBody( groundRigidBodyCI ); world.addRigidBody( groundRigidBody ); btCollisionShape fallShape = new btSphereShape( btScalar.BT_ONE ); btVector3 origin = new btVector3( 0, 50, 0 ); btTransform init = new btTransform( ref btQuaternion.Identity, ref origin ); btDefaultMotionState fallMotionState = new btDefaultMotionState( ref init ); btScalar mass = 1; btVector3 fallInertia; fallShape.calculateLocalInertia( mass, out fallInertia ); btRigidBody.btRigidBodyConstructionInfo fallingRigidBodyCI = new btRigidBody.btRigidBodyConstructionInfo( mass, fallMotionState , fallShape, ref fallInertia ); fallingRigidBody = new btRigidBody( fallingRigidBodyCI ); world.addRigidBody( fallingRigidBody ); }
internal void Initialize( btSphereShape sphere, btTriangleShape triangle, double contactBreakingThreshold ) { m_sphere = ( sphere ); m_triangle = ( triangle ); m_contactBreakingThreshold = ( contactBreakingThreshold ); }