]> git.mxchange.org Git - flightgear.git/blobdiff - src/Main/fg_init.cxx
Added support for managing fov via the property manager so the --fov= option
[flightgear.git] / src / Main / fg_init.cxx
index 43bd1d3265492294d60b818cb35b4e661c649879..0c506726ffdb49e812378c8c4a30e6d03bf56aa9 100644 (file)
@@ -356,14 +356,26 @@ bool fgInitPosition( void ) {
     f->set_Longitude( fgGetDouble("/position/longitude") * DEG_TO_RAD );
     f->set_Latitude( fgGetDouble("/position/latitude") * DEG_TO_RAD );
 
+    FG_LOG( FG_GENERAL, FG_INFO,
+           "scenery.cur_elev = " << scenery.cur_elev );
+    FG_LOG( FG_GENERAL, FG_INFO,
+           "/position/altitude = " << fgGetDouble("/position/altitude") );
+
+    // if we requested on ground startups
+    if ( fgGetBool( "/sim/startup/onground" ) ) {
+       fgSetDouble("/position/altitude", scenery.cur_elev + 1 );
+    }
+
+    // if requested altitude is below ground level
     if ( scenery.cur_elev > fgGetDouble("/position/altitude") - 1) {
-        fgSetDouble("/position/altitude", scenery.cur_elev + 1 );
+       fgSetDouble("/position/altitude", scenery.cur_elev + 1 );
     }
 
     FG_LOG( FG_GENERAL, FG_INFO,
-           "starting altitude is = " << fgGetDouble("/position/altitude") );
+           "starting altitude is = " <<
+           fgGetDouble("/position/altitude") );
 
-    f->set_Altitude( fgGetDouble("/position/altitude") * METER_TO_FEET );
+    f->set_Altitude( fgGetDouble("/position/altitude") );
     FG_LOG( FG_GENERAL, FG_INFO,
            "Initial position is: ("
            << (f->get_Longitude() * RAD_TO_DEG) << ", "
@@ -489,6 +501,7 @@ bool fgInitSubsystems( void ) {
            scenery.cur_elev );
 
     double dt = 1.0 / fgGetInt("/sim/model-hz");
+    // cout << "dt = " << dt << endl;
 
     const string &model = fgGetString("/sim/flight-model");
     if (model == "larcsim") {
@@ -509,6 +522,8 @@ bool fgInitSubsystems( void ) {
               << ", can't init aircraft");
        exit(-1);
     }
+    cur_fdm_state->stamp();
+    cur_fdm_state->set_remainder( 0 );
 
     // allocates structures so must happen before any of the flight
     // model or control parameters are set
@@ -763,16 +778,29 @@ bool fgInitSubsystems( void ) {
 
     FG_LOG( FG_GENERAL, FG_INFO, endl);
 
+                               // Save the initial state for future
+                               // reference.
+    globals->saveInitialState();
+
     return true;
 }
 
 
 void fgReInitSubsystems( void )
 {
+    FG_LOG( FG_GENERAL, FG_INFO,
+           "/position/altitude = " << fgGetDouble("/position/altitude") );
+
     bool freeze = globals->get_freeze();
     if( !freeze )
         globals->set_freeze( true );
     
+    // Initialize the Scenery Management subsystem
+    if ( ! fgSceneryInit() ) {
+       FG_LOG( FG_GENERAL, FG_ALERT, "Error in Scenery initialization!" );
+       exit(-1);
+    }
+
     if( global_tile_mgr.init() ) {
        // Load the local scenery data
        global_tile_mgr.update( fgGetDouble("/position/longitude"),
@@ -784,9 +812,9 @@ void fgReInitSubsystems( void )
 
     // cout << "current scenery elev = " << scenery.cur_elev << endl;
 
-    fgInitPosition();
     fgFDMSetGroundElevation( fgGetString("/sim/flight-model"), 
                             scenery.cur_elev );
+    fgInitPosition();
 
     // Reset our altitude if we are below ground
     FG_LOG( FG_GENERAL, FG_DEBUG, "Current altitude = "
@@ -843,7 +871,7 @@ void fgReInitSubsystems( void )
            << globals->get_current_view()->get_abs_view_pos());
 
     cur_fdm_state->init();
-    cur_fdm_state->bind();
+//     cur_fdm_state->bind();
 //     cur_fdm_state->init( 1.0 / fgGetInt("/sim/model-hz") );
 
     scenery.cur_elev = cur_fdm_state->get_Runway_altitude() * FEET_TO_METER;