]> git.mxchange.org Git - flightgear.git/commitdiff
Replay improvements
authorThorstenB <brehmt@gmail.com>
Sun, 20 Mar 2011 13:59:19 +0000 (14:59 +0100)
committerThorstenB <brehmt@gmail.com>
Sun, 20 Mar 2011 14:03:47 +0000 (15:03 +0100)
Clear replay buffers on sim reset.
Allow instant replay to be activated properly when sim is paused.

src/Aircraft/replay.cxx
src/Aircraft/replay.hxx
src/Main/fg_commands.cxx
src/Main/fg_init.cxx

index aa976adcbf4c3d280c737377aae5124e5fab19fa..6c5c410d82793c44043ab27a4ff0268d743fe6ff 100644 (file)
@@ -83,6 +83,14 @@ FGReplay::~FGReplay() {
  */
 
 void FGReplay::init() {
+    reinit();
+}
+
+/** 
+ * Reset replay queues.
+ */
+
+void FGReplay::reinit() {
     sim_time = 0.0;
     last_mt_time = 0.0;
     last_lt_time = 0.0;
@@ -110,17 +118,16 @@ void FGReplay::init() {
                              (lt_list_time*lt_dt)); 
     for (int i = 0; i < estNrObjects; i++) {
         recycler.push_back(new FGReplayData);
-
     }
 }
 
-
 /** 
  * Bind to the property tree
  */
 
 void FGReplay::bind() {
     disable_replay = fgGetNode( "/sim/replay/disable", true );
+    replay_master = fgGetNode( "/sim/freeze/replay-state", true );
 }
 
 
@@ -140,8 +147,6 @@ void FGReplay::unbind() {
 void FGReplay::update( double dt ) {
     timingInfo.clear();
     stamp("begin");
-    static SGPropertyNode *replay_master
-        = fgGetNode( "/sim/freeze/replay-state", true );
 
     if( disable_replay->getBoolValue() ) {
         if ( sim_time != 0.0 ) {
index 0e599c1a42f4f3b7721b15244e1a7f0acaa20f76..bad1ce8b1d18980102ac01e68256dad2b67ecf80 100644 (file)
@@ -69,6 +69,7 @@ public:
     virtual ~FGReplay();
 
     virtual void init();
+    virtual void reinit();
     virtual void bind();
     virtual void unbind();
     virtual void update( double dt );
@@ -96,6 +97,7 @@ private:
     replay_list_type long_term;
     replay_list_type recycler;
     SGPropertyNode_ptr disable_replay;
+    SGPropertyNode_ptr replay_master;
 };
 
 
index 97f5ca39971c83e2842ea1be4edcbbb4fa969469..d2b5b021e48a0b45317882cf3e4e6ad503a5a7a4 100644 (file)
@@ -1243,8 +1243,10 @@ do_log_level (const SGPropertyNode * arg)
 static bool
 do_replay (const SGPropertyNode * arg)
 {
-    // freeze the master fdm
+    // freeze the fdm, resume from sim pause 
     fgSetInt( "/sim/freeze/replay-state", 1 );
+    fgSetBool("/sim/freeze/master", 0 );
+    fgSetBool("/sim/freeze/clock", 0 );
 
     FGReplay *r = (FGReplay *)(globals->get_subsystem( "replay" ));
 
index a615eddeecbad54c0f2dbc042f493233e92c2c11..260f9ef2268923c3319f6956b78ef84bc039f60b 100644 (file)
@@ -1553,6 +1553,9 @@ void fgReInitSubsystems()
     // Initialize the FDM
     globals->get_subsystem("flight")->reinit();
 
+    // reset replay buffers
+    globals->get_subsystem("replay")->reinit();
+    
     // reload offsets from config defaults
     globals->get_viewmgr()->reinit();