]> git.mxchange.org Git - flightgear.git/commitdiff
A couple minor tweaks to the replay subsystem to allow "pausing" the replay.
authorcurt <curt>
Wed, 5 Jan 2005 05:45:38 +0000 (05:45 +0000)
committercurt <curt>
Wed, 5 Jan 2005 05:45:38 +0000 (05:45 +0000)
src/Main/fg_commands.cxx
src/Main/main.cxx

index 295a343f68c5752ee24f1e383418837748efe391..335b25599c8ad379f7fcbb7da8a7cc04d91955d4 100644 (file)
@@ -1153,7 +1153,7 @@ static bool
 do_replay (const SGPropertyNode * arg)
 {
     // freeze the master fdm
-    fgSetBool( "/sim/freeze/replay", true );
+    fgSetInt( "/sim/freeze/replay-state", 1 );
 
     FGReplay *r = (FGReplay *)(globals->get_subsystem( "replay" ));
 
index 67d55a2eda144b8274f3464ae11b2644831fb25b..83d3add39904a22f5f6f4a54b2d44bf119b7599d 100644 (file)
@@ -127,8 +127,8 @@ extern int _bootstrap_OSInit;
 void fgUpdateTimeDepCalcs() {
     static bool inited = false;
 
-    static const SGPropertyNode *replay_master
-        = fgGetNode( "/sim/freeze/replay", true );
+    static const SGPropertyNode *replay_state
+        = fgGetNode( "/sim/freeze/replay-state", true );
     static SGPropertyNode *replay_time
         = fgGetNode( "/sim/replay/time", true );
     // static const SGPropertyNode *replay_end_time
@@ -162,15 +162,21 @@ void fgUpdateTimeDepCalcs() {
             inited = true;
         }
 
-        if ( ! replay_master->getBoolValue() ) {
+        if ( replay_state->getIntValue() == 0 ) {
+           // replay off, run fdm
             cur_fdm_state->update( delta_time_sec );
         } else {
             FGReplay *r = (FGReplay *)(globals->get_subsystem( "replay" ));
             r->replay( replay_time->getDoubleValue() );
-            replay_time->setDoubleValue( replay_time->getDoubleValue()
-                                         + ( delta_time_sec
-                                             * fgGetInt("/sim/speed-up") ) );
-        }
+           if ( replay_state->getIntValue() == 1 ) {
+                // normal playback
+                replay_time->setDoubleValue( replay_time->getDoubleValue()
+                                             + ( delta_time_sec
+                                               * fgGetInt("/sim/speed-up") ) );
+           } else if ( replay_state->getIntValue() == 2 ) {
+               // paused playback (don't advance replay time)
+           }
+       }
     } else {
         // do nothing, fdm isn't inited yet
     }
@@ -213,8 +219,6 @@ static void fgMainLoop( void ) {
         = fgGetNode("/sim/freeze/clock", true);
     static const SGPropertyNode *cur_time_override
         = fgGetNode("/sim/time/cur-time-override", true);
-    // static const SGPropertyNode *replay_master
-    //     = fgGetNode("/sim/freeze/replay", true);
 
     SGCloudLayer::enable_bump_mapping = fgGetBool("/sim/rendering/bump-mapping");