bool Game::initialize() { if( !initializeOgre() ) return false; if( !initializeCEGUI() ) return false; if( !initializeOIS() ) return false; if( !initializeBullet() ) return false; //create the plane in Ogre3D Ogre::Plane plane(Ogre::Vector3::UNIT_Z, -15); Ogre::MeshManager::getSingleton().createPlane("ground", "meshes", plane, 1500, 1500, 20, 20, true, 1, 5, 5, Ogre::Vector3::UNIT_Y); Ogre::Entity* entGround = m_pScene->createEntity("ground"); Ogre::SceneNode* groundNode = m_pScene->getRootSceneNode()->createChildSceneNode("groundNode"); groundNode->attachObject(entGround); entGround->setMaterialName("BluePill"); //create the Bullet ground plane m_pGroundShape = new btStaticPlaneShape(btVector3(0, 0, 1), -15); m_pGroundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, -1))); btRigidBody::btRigidBodyConstructionInfo groundRigidBodyCI(0, m_pGroundMotionState, m_pGroundShape, btVector3(0, 0, 0)); m_pGroundBody = new btRigidBody(groundRigidBodyCI); m_pDynamicsWorld->addRigidBody(m_pGroundBody); //create the player in Ogre3D Ogre::String meshname = "Pill.mesh"; Ogre::Entity* entity = m_pScene->createEntity(meshname); m_pPlayerSceneNode = m_pRootSceneNode->createChildSceneNode(); m_pPlayerSceneNode->attachObject(entity); m_pPlayerSceneNode->scale(Ogre::Vector3(0.5f, 0.5f, 0.5f)); m_PlayerPosition = Ogre::Vector3(0.0f, 0.0f, -10.0f); m_PlayerVelocity = Ogre::Vector3(0.0f, 0.0f, 0.0f); m_pPlayerSceneNode->translate(m_PlayerPosition); //create the Bullet player m_pPlayerShape = new btBoxShape(btVector3(1,1,1)); m_pPlayerMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 0, -10))); btScalar playerMass = 1; btVector3 playerInertia(0, 0, 0); m_pPlayerShape->calculateLocalInertia(playerMass, playerInertia); btRigidBody::btRigidBodyConstructionInfo playerRigidBodyCI(playerMass, m_pPlayerMotionState, m_pPlayerShape, playerInertia); m_pPlayerBody = new btRigidBody(playerRigidBodyCI); //body->setRestitution(1); m_pPlayerBody->setUserPointer(m_pPlayerSceneNode); m_pDynamicsWorld->addRigidBody(m_pPlayerBody); return true; }//Game::initialize
void OgreApp::constructObject() { if(! initializeRoot()) { // user cancelled config, so leave return; } Ogre::LogManager::getSingletonPtr()->logMessage("+++ root configured"); // initialize Root -- have it create a render window for us root->initialise(true); Ogre::LogManager::getSingletonPtr()->logMessage("+++ root initialized"); // get a pointer to the auto-created window window = root->getAutoCreatedWindow(); Ogre::LogManager::getSingletonPtr()->logMessage("+++ render window created"); if(oisEnabled) { initializeOIS(window); Ogre::LogManager::getSingletonPtr()->logMessage("+++ OIS initialized"); mouse->setEventCallback(this); keyboard->setEventCallback(this); mouse->setBuffered(true); keyboard->setBuffered(true); } createSceneManager(); //Ogre::LogManager::getSingletonPtr()->logMessage("+++ scene manager created"); setupResources(); //Ogre::LogManager::getSingletonPtr()->logMessage("+++ resources setup"); createScene(); //Ogre::LogManager::getSingletonPtr()->logMessage("+++ scene created"); createFrameListener(); //Ogre::LogManager::getSingletonPtr()->logMessage("+++ frameListener created"); // register our frame listener if(frameListener) root->addFrameListener(frameListener); //Ogre::LogManager::getSingletonPtr()->logMessage("+++ frameListener registered"); }