]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/fg_init.cxx
Improve timing statistics
[flightgear.git] / src / Main / fg_init.cxx
index 65be585e420f1d896548177fe2c1235bc10e6803..d77a81a415e8746bfa7dd237adebc449725575a5 100644 (file)
 
 #include <AIModel/AIManager.hxx>
 
-#if ENABLE_ATCDCL
-#   include <ATCDCL/ATCmgr.hxx>
-#   include "ATCDCL/commlist.hxx"
-#else
-#   include "ATC/atis.hxx"
-#   include "ATC/atcutils.hxx"
-#endif
+#include <ATCDCL/ATCmgr.hxx>
+#include <ATCDCL/commlist.hxx>
+#include <ATC/atis_mgr.hxx>
 
 #include <Autopilot/route_mgr.hxx>
 #include <Autopilot/autopilotgroup.hxx>
@@ -589,7 +585,7 @@ public:
   
   bool loadAircraft()
   {
-    std::string aircraft = fgGetString( "/sim/aircraft", "");    
+    std::string aircraft = fgGetString( "/sim/aircraft", "");
     if (aircraft.empty()) {
       SG_LOG(SG_GENERAL, SG_ALERT, "no aircraft specified");
       return false;
@@ -601,6 +597,9 @@ public:
       SGPropertyNode *n = _cache->getNode("fg-root", true);
       n->setStringValue(globals->get_fg_root().c_str());
       n->setAttribute(SGPropertyNode::USERARCHIVE, true);
+      n = _cache->getNode("fg-aircraft", true);
+      n->setStringValue(getAircraftPaths().c_str());
+      n->setAttribute(SGPropertyNode::USERARCHIVE, true);
       _cache->removeChildren("aircraft");
   
       fgFindAircraft(this, &FindAndCacheAircraft::checkAircraft);
@@ -629,11 +628,29 @@ public:
   }
   
 private:
+  SGPath getAircraftPaths() {
+    string_list pathList = globals->get_aircraft_paths();
+    SGPath aircraftPaths;
+    string_list::const_iterator it = pathList.begin();
+    if (it != pathList.end()) {
+        aircraftPaths.set(*it);
+        it++;
+    }
+    for (; it != pathList.end(); ++it) {
+        aircraftPaths.add(*it);
+    }
+    return aircraftPaths;
+  }
+  
   bool checkCache()
   {
     if (globals->get_fg_root() != _cache->getStringValue("fg-root", "")) {
       return false; // cache mismatch
     }
+
+    if (getAircraftPaths().str() != _cache->getStringValue("fg-aircraft", "")) {
+      return false; // cache mismatch
+    }
     
     vector<SGPropertyNode_ptr> cache = _cache->getChildren("aircraft");
     for (unsigned int i = 0; i < cache.size(); i++) {
@@ -820,7 +837,7 @@ static void fgApplyStartOffset(const SGGeod& aStartPos, double aHeading, double
 }
 
 // Set current_options lon/lat given an airport id and heading (degrees)
-static bool fgSetPosFromAirportIDandHdg( const string& id, double tgt_hdg ) {
+bool fgSetPosFromAirportIDandHdg( const string& id, double tgt_hdg ) {
     if ( id.empty() )
         return false;
 
@@ -1366,19 +1383,17 @@ bool fgInitSubsystems() {
 
 
     ////////////////////////////////////////////////////////////////////
-    // Initialise the ATC Manager 
+    // Initialise the ATC Manager
     ////////////////////////////////////////////////////////////////////
 
-#if ENABLE_ATCDCL
     SG_LOG(SG_GENERAL, SG_INFO, "  ATC Manager");
     globals->set_ATC_mgr(new FGATCMgr);
     globals->get_ATC_mgr()->init(); 
-#else
+
     ////////////////////////////////////////////////////////////////////
     // Initialise the ATIS Manager
     ////////////////////////////////////////////////////////////////////
     globals->add_subsystem("atis", new FGAtisManager, SGSubsystemMgr::POST_FDM);
-#endif
 
 
     ////////////////////////////////////////////////////////////////////
@@ -1502,7 +1517,7 @@ bool fgInitSubsystems() {
     return true;
 }
 
-
+// Reset: this is what the 'reset' command (and hence, GUI) is attached to
 void fgReInitSubsystems()
 {
     static const SGPropertyNode *master_freeze
@@ -1538,12 +1553,14 @@ 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();
 
     globals->get_subsystem("time")->reinit();
-    globals->get_subsystem("tile-manager")->reinit();
-    
+
 // setup state to end re-init
     fgSetBool("/sim/signals/reinit", false);
     if ( !freeze ) {
@@ -1553,13 +1570,6 @@ void fgReInitSubsystems()
 }
 
 
-void doSimulatorReset(void)  // from gui_local.cxx -- TODO merge with fgReInitSubsystems()
-{
-    
-
-    fgReInitSubsystems();
-}
-
 ///////////////////////////////////////////////////////////////////////////////
 // helper object to implement the --show-aircraft command.
 // resides here so we can share the fgFindAircraftInDir template above,