@ -67,14 +67,15 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt)
{
try
{
mEnvironment . setFrameDuration ( evt . timeSinceLastFrame ) ;
float frametime = std : : min ( evt . timeSinceLastFrame , 0.2f ) ;
mEnvironment . setFrameDuration ( frametime ) ;
// update input
MWBase : : Environment : : get ( ) . getInputManager ( ) - > update ( evt. timeSinceLastFra me, false ) ;
MWBase : : Environment : : get ( ) . getInputManager ( ) - > update ( fram etime, false ) ;
// sound
if ( mUseSound )
MWBase : : Environment : : get ( ) . getSoundManager ( ) - > update ( evt . timeSinceLastFra me) ;
MWBase : : Environment : : get ( ) . getSoundManager ( ) - > update ( frameti me) ;
// global scripts
MWBase : : Environment : : get ( ) . getScriptManager ( ) - > getGlobalScripts ( ) . run ( ) ;
@ -88,19 +89,19 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt)
// passing of time
if ( ! MWBase : : Environment : : get ( ) . getWindowManager ( ) - > isGuiMode ( ) )
MWBase : : Environment : : get ( ) . getWorld ( ) - > advanceTime (
mEnvironment. getFrameDuration ( ) * MWBase : : Environment : : get ( ) . getWorld ( ) - > getTimeScaleFactor ( ) / 3600 ) ;
MWBase : : Environment : : get ( ) . getWorld ( ) - > advanceTime (
frametime * MWBase : : Environment : : get ( ) . getWorld ( ) - > getTimeScaleFactor ( ) / 3600 ) ;
if ( changed ) // keep change flag for another frame, if cell changed happend in local script
MWBase : : Environment : : get ( ) . getWorld ( ) - > markCellAsUnchanged ( ) ;
// update actors
MWBase : : Environment : : get ( ) . getMechanicsManager ( ) - > update ( mEnvironment. getFrameDuration ( ) ,
MWBase : : Environment : : get ( ) . getMechanicsManager ( ) - > update ( frametime ,
MWBase : : Environment : : get ( ) . getWindowManager ( ) - > isGuiMode ( ) ) ;
// update world
MWBase : : Environment : : get ( ) . getWorld ( ) - > update ( evt . timeSinceLastFra me, MWBase : : Environment : : get ( ) . getWindowManager ( ) - > isGuiMode ( ) ) ;
MWBase : : Environment : : get ( ) . getWorld ( ) - > update ( frameti me, MWBase : : Environment : : get ( ) . getWindowManager ( ) - > isGuiMode ( ) ) ;
// update GUI
Ogre : : RenderWindow * window = mOgre - > getWindow ( ) ;
@ -108,7 +109,7 @@ bool OMW::Engine::frameRenderingQueued (const Ogre::FrameEvent& evt)
MWBase : : Environment : : get ( ) . getWorld ( ) - > getTriangleBatchCount ( tri , batch ) ;
MWBase : : Environment : : get ( ) . getWindowManager ( ) - > wmUpdateFps ( window - > getLastFPS ( ) , tri , batch ) ;
MWBase : : Environment : : get ( ) . getWindowManager ( ) - > onFrame ( evt. timeSinceLastFra me) ;
MWBase : : Environment : : get ( ) . getWindowManager ( ) - > onFrame ( fram etime) ;
}
catch ( const std : : exception & e )
{