X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FMain%2Ffg_init.cxx;h=d77a81a415e8746bfa7dd237adebc449725575a5;hb=38226af24ec01e8f0a20d7fd73ef838a69f6ef25;hp=65be585e420f1d896548177fe2c1235bc10e6803;hpb=9ad18de448a4b24761f2b09f27d8bf388ff2ea1a;p=flightgear.git diff --git a/src/Main/fg_init.cxx b/src/Main/fg_init.cxx index 65be585e4..d77a81a41 100644 --- a/src/Main/fg_init.cxx +++ b/src/Main/fg_init.cxx @@ -74,13 +74,9 @@ #include -#if ENABLE_ATCDCL -# include -# include "ATCDCL/commlist.hxx" -#else -# include "ATC/atis.hxx" -# include "ATC/atcutils.hxx" -#endif +#include +#include +#include #include #include @@ -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 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,