]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/fg_init.cxx
Erik Hofman:
[flightgear.git] / src / Main / fg_init.cxx
index 9f8c6ebff778bf4fc2b9ee7aa4c2be061b1b6be6..dae961c619a0fde92b6cc2a2c45f6ec87e694747 100644 (file)
@@ -89,6 +89,7 @@
 #include <FDM/JSBSim/JSBSim.hxx>
 #include <FDM/LaRCsim.hxx>
 #include <FDM/MagicCarpet.hxx>
+#include <FDM/UFO.hxx>
 #include <FDM/NullFDM.hxx>
 #include <FDM/YASim/YASim.hxx>
 #include <Include/general.hxx>
 #include <Time/moonpos.hxx>
 #include <Time/tmp.hxx>
 
-#ifndef FG_NEW_ENVIRONMENT
+#ifdef FG_WEATHERCM
 #  include <WeatherCM/FGLocalWeatherDatabase.h>
 #else
 #  include <Environment/environment_mgr.hxx>
@@ -264,8 +265,8 @@ bool fgInitConfig ( int argc, char **argv ) {
     config.append( "system.fgfsrc" );
     fgParseOptions(config.str());
 
-    char name[256];
 #if defined( unix ) || defined( __CYGWIN__ )
+    char name[256];
     // Check for $fg_root/system.fgfsrc.hostname
     gethostname( name, 256 );
     config.concat( "." );
@@ -492,6 +493,7 @@ bool fgSetPosFromAirportIDandHdg( const string& id, double tgt_hdg ) {
     return true;
 }
 
+
 void fgSetPosFromGlideSlope(void) {
     double gs = fgGetDouble("/velocities/glideslope");
     double od = fgGetDouble("/sim/startup/offset-distance");
@@ -586,9 +588,11 @@ void fgInitFDM() {
            cur_fdm_state = new FGBalloonSim( dt );
        } else if ( model == "magic" ) {
            cur_fdm_state = new FGMagicCarpet( dt );
+       } else if ( model == "ufo" ) {
+           cur_fdm_state = new FGUFO( dt );
        } else if ( model == "external" ) {
            cur_fdm_state = new FGExternal( dt );
-       } else if ( model.find("network,") == 0 ) {
+       } else if ( model.find("network") == 0 ) {
             string host = "localhost";
             int port1 = 5501;
             int port2 = 5502;
@@ -736,14 +740,22 @@ bool fgInitSubsystems( void ) {
        exit(-1);
     }
 
+    ////////////////////////////////////////////////////////////////////
+    // Initialize the event manager subsystem.
+    ////////////////////////////////////////////////////////////////////
+
+    global_events.init();
+
+    // Output event stats every 60 seconds
+    global_events.Register( "FGEventMgr::print_stats()",
+                           &global_events, &FGEventMgr::print_stats,
+                           60000 );
+
 
     ////////////////////////////////////////////////////////////////////
     // Initialize the scenery management subsystem.
     ////////////////////////////////////////////////////////////////////
 
-    scenery.init();
-    scenery.bind();
-
     if ( global_tile_mgr.init() ) {
        // Load the local scenery data
        double visibility_meters = fgGetDouble("/environment/visibility-m");
@@ -756,9 +768,14 @@ bool fgInitSubsystems( void ) {
        exit(-1);
     }
 
+    // cause refresh of viewer scenery timestamps every 15 seconds...
+    global_events.Register( "FGTileMgr::refresh_view_timestamps()",
+                           &global_tile_mgr, &FGTileMgr::refresh_view_timestamps,
+                           15000 );
+
     SG_LOG( SG_GENERAL, SG_DEBUG,
            "Current terrain elevation after tile mgr init " <<
-           scenery.get_cur_elev() );
+           globals->get_scenery()->get_cur_elev() );
 
 
     ////////////////////////////////////////////////////////////////////
@@ -779,18 +796,6 @@ bool fgInitSubsystems( void ) {
     fgInitView();
 
 
-    ////////////////////////////////////////////////////////////////////
-    // Initialize the event manager subsystem.
-    ////////////////////////////////////////////////////////////////////
-
-    global_events.init();
-
-    // Output event stats every 60 seconds
-    global_events.Register( "FGEventMgr::print_stats()",
-                           &global_events, &FGEventMgr::print_stats,
-                           60000 );
-
-
     ////////////////////////////////////////////////////////////////////
     // Initialize the lighting subsystem.
     ////////////////////////////////////////////////////////////////////
@@ -839,7 +844,7 @@ bool fgInitSubsystems( void ) {
     ////////////////////////////////////////////////////////////////////
 
     // Initialize the weather modeling subsystem
-#ifndef FG_NEW_ENVIRONMENT
+#ifdef FG_WEATHERCM
     // Initialize the WeatherDatabase
     SG_LOG(SG_GENERAL, SG_INFO, "Creating LocalWeatherDatabase");
     sgVec3 position;
@@ -1098,18 +1103,9 @@ void fgReInitSubsystems( void )
     }
     
     // Initialize the Scenery Management subsystem
-    scenery.init();
-
-#if 0
-    if( global_tile_mgr.init() ) {
-       Load the local scenery data
-       global_tile_mgr.update( longitude->getDoubleValue(),
-                               latitude->getDoubleValue() );
-    } else {
-       SG_LOG( SG_GENERAL, SG_ALERT, "Error in Tile Manager initialization!" );
-        exit(-1);
-    }
-#endif
+    // FIXME, what really needs to get initialized here, at the time
+    // this was commented out, scenery.init() was a noop
+    // scenery.init();
 
     fgInitFDM();