mirror of
https://github.com/OpenMW/openmw.git
synced 2025-02-03 18:15:35 +00:00
Don't create the player object until the game starts
Fixes a crash introduced in e591d23
when using --skip-menu=0.
This commit is contained in:
parent
b3735981d6
commit
d70306382e
1 changed files with 28 additions and 16 deletions
|
@ -66,9 +66,13 @@ void OMW::Engine::executeLocalScripts()
|
||||||
|
|
||||||
bool OMW::Engine::frameStarted (const Ogre::FrameEvent& evt)
|
bool OMW::Engine::frameStarted (const Ogre::FrameEvent& evt)
|
||||||
{
|
{
|
||||||
bool paused = MWBase::Environment::get().getWindowManager()->isGuiMode();
|
if (MWBase::Environment::get().getStateManager()->getState()!=
|
||||||
MWBase::Environment::get().getWorld()->frameStarted(evt.timeSinceLastFrame, paused);
|
MWBase::StateManager::State_NoGame)
|
||||||
MWBase::Environment::get().getWindowManager ()->frameStarted(evt.timeSinceLastFrame);
|
{
|
||||||
|
bool paused = MWBase::Environment::get().getWindowManager()->isGuiMode();
|
||||||
|
MWBase::Environment::get().getWorld()->frameStarted(evt.timeSinceLastFrame, paused);
|
||||||
|
MWBase::Environment::get().getWindowManager ()->frameStarted(evt.timeSinceLastFrame);
|
||||||
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -110,8 +114,12 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt)
|
||||||
|
|
||||||
|
|
||||||
// update actors
|
// update actors
|
||||||
MWBase::Environment::get().getMechanicsManager()->update(frametime,
|
if (MWBase::Environment::get().getStateManager()->getState()!=
|
||||||
paused);
|
MWBase::StateManager::State_NoGame)
|
||||||
|
{
|
||||||
|
MWBase::Environment::get().getMechanicsManager()->update(frametime,
|
||||||
|
paused);
|
||||||
|
}
|
||||||
|
|
||||||
if (MWBase::Environment::get().getStateManager()->getState()==
|
if (MWBase::Environment::get().getStateManager()->getState()==
|
||||||
MWBase::StateManager::State_Running)
|
MWBase::StateManager::State_Running)
|
||||||
|
@ -122,16 +130,24 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt)
|
||||||
}
|
}
|
||||||
|
|
||||||
// update world
|
// update world
|
||||||
MWBase::Environment::get().getWorld()->update(frametime, paused);
|
if (MWBase::Environment::get().getStateManager()->getState()!=
|
||||||
|
MWBase::StateManager::State_NoGame)
|
||||||
|
{
|
||||||
|
MWBase::Environment::get().getWorld()->update(frametime, paused);
|
||||||
|
}
|
||||||
|
|
||||||
// update GUI
|
// update GUI
|
||||||
Ogre::RenderWindow* window = mOgre->getWindow();
|
if (MWBase::Environment::get().getStateManager()->getState()!=
|
||||||
unsigned int tri, batch;
|
MWBase::StateManager::State_NoGame)
|
||||||
MWBase::Environment::get().getWorld()->getTriangleBatchCount(tri, batch);
|
{
|
||||||
MWBase::Environment::get().getWindowManager()->wmUpdateFps(window->getLastFPS(), tri, batch);
|
Ogre::RenderWindow* window = mOgre->getWindow();
|
||||||
|
unsigned int tri, batch;
|
||||||
|
MWBase::Environment::get().getWorld()->getTriangleBatchCount(tri, batch);
|
||||||
|
MWBase::Environment::get().getWindowManager()->wmUpdateFps(window->getLastFPS(), tri, batch);
|
||||||
|
|
||||||
MWBase::Environment::get().getWindowManager()->onFrame(frametime);
|
MWBase::Environment::get().getWindowManager()->onFrame(frametime);
|
||||||
MWBase::Environment::get().getWindowManager()->update();
|
MWBase::Environment::get().getWindowManager()->update();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
catch (const std::exception& e)
|
catch (const std::exception& e)
|
||||||
{
|
{
|
||||||
|
@ -393,10 +409,6 @@ void OMW::Engine::prepareEngine (Settings::Manager & settings)
|
||||||
mEnvironment.setJournal (new MWDialogue::Journal);
|
mEnvironment.setJournal (new MWDialogue::Journal);
|
||||||
mEnvironment.setDialogueManager (new MWDialogue::DialogueManager (mExtensions, mVerboseScripts, mTranslationDataStorage));
|
mEnvironment.setDialogueManager (new MWDialogue::DialogueManager (mExtensions, mVerboseScripts, mTranslationDataStorage));
|
||||||
|
|
||||||
mEnvironment.getWorld()->renderPlayer();
|
|
||||||
mechanics->buildPlayer();
|
|
||||||
window->updatePlayer();
|
|
||||||
|
|
||||||
mOgre->getRoot()->addFrameListener (this);
|
mOgre->getRoot()->addFrameListener (this);
|
||||||
|
|
||||||
// scripts
|
// scripts
|
||||||
|
|
Loading…
Reference in a new issue