Пример #1
0
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
Пример #2
0
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");

}