/*---------------------------------------------------------------------------------*/ 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..."); }
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; }
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(); } }
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" ); }
void SplashScreenState::buttonHit(OgreBites::Button *button) { if (button->getName() == "SplashBtn") changeAppState(findByName("GameState")); }