Ejemplo n.º 1
0
/*---------------------------------------------------------------------------------*/
void AppStateManager::start(AppState* state)
{
	/* Main loop of the application that does the following steps:
	1. Change to the state specified */

	changeAppState(state);
	
	double timeSinceLastFrame = 1;
	int startTime = 0;

	//2. Start loop
	while(!mtbShutdown) 
	{
		if(GameFramework::getSingletonPtr()->mpRenderWnd->isClosed())mtbShutdown = true;

#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
		Ogre::WindowEventUtilities::messagePump();
#endif	
		if(GameFramework::getSingletonPtr()->mpRenderWnd->isActive())
		{
			startTime = GameFramework::getSingletonPtr()->mpTimer->getMillisecondsCPU();			

			//3. Capture keyboard and mouse input
			GameFramework::getSingletonPtr()->mpKeyboard->capture();
			GameFramework::getSingletonPtr()->mpMouse->capture();

			//Might get info from the keyboard and mouse input about shutting down.
			if (mtbShutdown)
				break;

			//4. Update the current state (the top most of the stack)
			mtActiveStateStack.back()->update(timeSinceLastFrame);
			
			#ifdef DEBUG
			GameFramework::getSingletonPtr()->updateOgre(timeSinceLastFrame);
			#endif
			
			//5. Call the OgreFramework class to update and render */
			GameFramework::getSingletonPtr()->mpRoot->renderOneFrame();
		
			timeSinceLastFrame = GameFramework::getSingletonPtr()->mpTimer->getMillisecondsCPU() - startTime;
			timeSinceLastFrame = timeSinceLastFrame / 1000;
		}
		else
		{
			Sleep(1000);
		}
	}

	GameFramework::getSingletonPtr()->mpLog->logMessage("Main loop quit");
	GameFramework::getSingletonPtr()->mpLog->logMessage("Shutdown OGRE...");
}
Ejemplo n.º 2
0
bool SplashScreenState::keyPressed(const OIS::KeyEvent &keyEventRef)
{
	if (OgreFramework::getSingletonPtr()->m_pKeyboard->isKeyDown(OIS::KC_ESCAPE))
	{
		m_bQuit = true;
		return true;
	}
	if (OgreFramework::getSingletonPtr()->m_pKeyboard->isKeyDown(OIS::KC_RETURN) ||
		OgreFramework::getSingletonPtr()->m_pKeyboard->isKeyDown(OIS::KC_SPACE))
	{
		changeAppState(findByName("MenuState"));
	}

	OgreFramework::getSingletonPtr()->keyPressed(keyEventRef);
	return true;
}
Ejemplo n.º 3
0
void Controller::run()
{
    while(mWindow.isOpen())
    {
        mCountDown -= mClock.restart();

        if(mCountDown < sf::Time::Zero)
        {
            mCountDown = mFPS;
            mCurrentAppState->update(mFPS);
        }

        mCurrentAppState->handleInput();
        mCurrentAppState->display();

        if(mChangeState)
            changeAppState();
    }
}
Ejemplo n.º 4
0
void AppStateManager::start(AppState* state)
{
        changeAppState(state);

        int timeSinceLastFrame = 1;
        int startTime = 0;

        while(!m_bShutdown)
        {
                if(OgreFramework::getSingletonPtr()->m_pRenderWnd->isClosed())m_bShutdown = true;

                Ogre::WindowEventUtilities::messagePump();

                if(OgreFramework::getSingletonPtr()->m_pRenderWnd->isActive())
                {
                        startTime = OgreFramework::getSingletonPtr()->m_pTimer->getMillisecondsCPU();

                        OgreFramework::getSingletonPtr()->m_pKeyboard->capture();
                        OgreFramework::getSingletonPtr()->m_pMouse->capture();

                        m_ActiveStateStack.back()->update(timeSinceLastFrame);

                        OgreFramework::getSingletonPtr()->updateOgre(timeSinceLastFrame);
                        OgreFramework::getSingletonPtr()->m_pRoot->renderOneFrame();

                        timeSinceLastFrame = OgreFramework::getSingletonPtr()->m_pTimer->getMillisecondsCPU() - startTime;
                }
                else
                {
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
            Sleep(1000);
#else
            sleep(1);
#endif
                }
        }

        OgreFramework::getSingletonPtr()->m_pLog->logMessage("Main loop quit");
}
void AppStateManager::start( AppState* state )
{
	changeAppState( state );

	double timeSinceLastFrame = 0;
	int startTime = 0;

	while( !mShutdown )
	{
		if( mOgre.mWindow->isClosed() )
            mShutdown = true;

		Ogre::WindowEventUtilities::messagePump();

		if( mOgre.mWindow->isActive() )
		{
			startTime = mOgre.mTimer->getMillisecondsCPU();

			mOgre.mKeyboard->capture();
			mOgre.mMouse->capture();

			mActiveStateStack.back()->update( timeSinceLastFrame );

			mOgre.mRoot->renderOneFrame();

			timeSinceLastFrame = double( mOgre.mTimer->getMillisecondsCPU() - startTime ) / 1000;
        }
		else
		{
#if OGRE_PLATFORM == OGRE_PLATFORM_WIN32
            Sleep( 1000 );
#else
            sleep( 1 );
#endif
		}
	}

	mOgre.mLog->logMessage( "Main loop quit" );
}
Ejemplo n.º 6
0
void SplashScreenState::buttonHit(OgreBites::Button *button)
{
	if (button->getName() == "SplashBtn")
		changeAppState(findByName("GameState"));
}