collisions do not work

gmysu

27-11-2011 22:32:23

Hello, I got objects defined like that


//floor
Ogre::Entity* floor_entity = mSceneMgr->createEntity("Floor", "cube.mesh");
Ogre::SceneNode* floor_node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
floor_node->attachObject(floor_entity);
floor_node->setScale(Ogre::Vector3(10,0.1,10));
OgreNewt::CollisionPtr floor_col( new OgreNewt::CollisionPrimitives::TreeCollision( mWorld, floor_entity,true, 0));
OgreNewt::Body* floorbody = new OgreNewt::Body( mWorld, floor_col );
floorbody->attachNode(floor_node);
floorbody->setPositionOrientation( Ogre::Vector3(0,-40,0), Ogre::Quaternion::IDENTITY );
floor_entity->setCastShadows(false);

//box1
Ogre::Vector3 size = Ogre::Vector3( 0.2, 0.2, 0.2);
Ogre::SceneNode* node = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Ogre::Entity* ent = mSceneMgr->createEntity("box_body", "cube.mesh" );
node->attachObject( ent );
node->setScale( size );
OgreNewt::CollisionPrimitives::Box *boxcol = new OgreNewt::CollisionPrimitives::Box(mWorld, size, 0);

OgreNewt::Body* bod = new OgreNewt::Body( mWorld, OgreNewt::CollisionPtr(boxcol) );
bod->attachNode( node );
bod->setPositionOrientation( Ogre::Vector3(-100,80,100), Ogre::Quaternion::IDENTITY );
Ogre::Real mass = 10.0;
Ogre::Vector3 inertia, centerOfMass;
boxcol->calculateInertialMatrix(inertia, centerOfMass);
inertia*=mass;
bod->setMassMatrix( mass, inertia );
bod->setCenterOfMass(centerOfMass);
bod->setStandardForceCallback();


//box2
Ogre::SceneNode* node2 = mSceneMgr->getRootSceneNode()->createChildSceneNode();
Ogre::Entity* ent2 = mSceneMgr->createEntity("box_body2", "cube.mesh" );
node2->attachObject( ent2 );
node2->setScale( size );
OgreNewt::CollisionPrimitives::Box *boxcol2 = new OgreNewt::CollisionPrimitives::Box(mWorld, size, 0);
//OgreNewt::Collision *box_col2 = OgreNewt::CollisionPtr(boxcol2);
OgreNewt::Body* bod2 = new OgreNewt::Body( mWorld, OgreNewt::CollisionPtr(boxcol2) );
bod2->attachNode( node2 );
bod2->setPositionOrientation( Ogre::Vector3(-100,20,100), Ogre::Quaternion::IDENTITY );
Ogre::Real mass2 = 10.0;
Ogre::Vector3 inertia2, centerOfMass2;
boxcol2->calculateInertialMatrix(inertia2, centerOfMass2);
inertia2*=mass2;
bod2->setMassMatrix( mass2, inertia2 );
bod2->setCenterOfMass(centerOfMass2);
bod2->setStandardForceCallback();


and my boxes just fall down and dont collide with each other. Any ideas?

Cheers