#include <Instrumentation/instrument_mgr.hxx>
#include <Model/acmodel.hxx>
#include <AIModel/AIManager.hxx>
-#include <Navaids/fixlist.hxx>
-#include <Navaids/ilslist.hxx>
-#include <Navaids/mkrbeacons.hxx>
+#include <Navaids/navdb.hxx>
#include <Navaids/navlist.hxx>
#include <Replay/replay.hxx>
#include <Scenery/scenery.hxx>
#include <Time/sunpos.hxx>
#include <Time/sunsolver.hxx>
#include <Time/tmp.hxx>
+#include <Traffic/TrafficMgr.hxx>
#ifdef FG_MPLAYER_AS
#include <MultiPlayer/multiplaytxmgr.hxx>
// Set current_options lon/lat given an airport id and heading (degrees)
static bool fgSetPosFromNAV( const string& id, const double& freq ) {
- FGNav *nav = current_navlist->findByIdentAndFreq( id.c_str(), freq );
+ FGNavRecord *nav
+ = globals->get_navlist()->findByIdentAndFreq( id.c_str(), freq );
// set initial position from runway and heading
if ( nav != NULL ) {
FGFix fix;
// set initial position from runway and heading
- if ( current_fixlist->query( id.c_str(), &fix ) ) {
+ if ( globals->get_fixlist()->query( id.c_str(), &fix ) ) {
SG_LOG( SG_GENERAL, SG_INFO, "Attempting to set starting position for "
<< id );
FGRunwayList *runways = new FGRunwayList( p_runway.str() );
globals->set_runways( runways );
- SG_LOG(SG_GENERAL, SG_INFO, "Loading Navaids");
+ FGNavList *navlist = new FGNavList;
+ FGNavList *loclist = new FGNavList;
+ FGNavList *gslist = new FGNavList;
+ FGNavList *dmelist = new FGNavList;
+ FGNavList *mkrlist = new FGNavList;
- SG_LOG(SG_GENERAL, SG_INFO, " VOR/NDB");
- current_navlist = new FGNavList;
- SGPath p_nav( globals->get_fg_root() );
- p_nav.append( "Navaids/default.nav" );
- current_navlist->init( p_nav );
+ globals->set_navlist( navlist );
+ globals->set_loclist( loclist );
+ globals->set_gslist( gslist );
+ globals->set_dmelist( dmelist );
+ globals->set_mkrlist( mkrlist );
- SG_LOG(SG_GENERAL, SG_INFO, " ILS and Marker Beacons");
- current_beacons = new FGMarkerBeacons;
- current_beacons->init();
- current_ilslist = new FGILSList;
- SGPath p_ils( globals->get_fg_root() );
- p_ils.append( "Navaids/default.ils" );
- current_ilslist->init( p_ils );
+ if ( !fgNavDBInit( navlist, loclist, gslist, dmelist, mkrlist ) ) {
+ SG_LOG( SG_GENERAL, SG_ALERT,
+ "Problems loading one or more navigational database" );
+ }
+
+ if ( fgGetBool("/sim/navdb/localizers/auto-align", true) ) {
+ // align all the localizers with their corresponding runways
+ // since data sources are good for cockpit navigation
+ // purposes, but not always to the error tolerances needed to
+ // exactly place these items.
+ double threshold
+ = fgGetDouble( "/sim/navdb/localizers/auto-align-threshold-deg",
+ 5.0 );
+ fgNavDBAlignLOCwithRunway( runways, loclist, threshold );
+ }
SG_LOG(SG_GENERAL, SG_INFO, " Fixes");
- current_fixlist = new FGFixList;
SGPath p_fix( globals->get_fg_root() );
- p_fix.append( "Navaids/default.fix" );
- current_fixlist->init( p_fix );
+ p_fix.append( "Navaids/fix.dat" );
+ FGFixList *fixlist = new FGFixList;
+ fixlist->init( p_fix );
+ globals->set_fixlist( fixlist );
return true;
}
globals->add_subsystem("lighting", new FGLight);
+ //////////////////////////////////////////////////////////////////////
+ // Initialize the 2D cloud subsystem.
+ ////////////////////////////////////////////////////////////////////
+ fgGetNode("/sim/rendering/bump-mapping", true);
+ fgSetBool("/sim/rendering/bump-mapping", true);
#ifdef FG_USE_CLOUDS_3D
////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////
// Initialise the AI Model Manager
////////////////////////////////////////////////////////////////////
-
SG_LOG(SG_GENERAL, SG_INFO, " AI Model Manager");
globals->add_subsystem("ai_model", new FGAIManager);
+ // It's probably a good idea to initialize the top level traffic manager
+ // After the AI and ATC systems have been initialized properly.
+ // AI Traffic manager
+ globals->add_subsystem("Traffic Manager", new FGTrafficManager);
+ FGTrafficManager *dispatcher =
+ (FGTrafficManager*) globals->get_subsystem("Traffic Manager");
+
+ readXML(string(globals->get_fg_root() + string("/Traffic/fgtraffic.xml")),
+ *dispatcher);
+ globals->get_subsystem("Traffic Manager")->init();
+
globals->add_subsystem("instrumentation", new FGInstrumentMgr);
globals->add_subsystem("systems", new FGSystemMgr);
+
+
////////////////////////////////////////////////////////////////////
// Initialize the radio stack subsystem.
////////////////////////////////////////////////////////////////////