]> git.mxchange.org Git - flightgear.git/commitdiff
Moved "scenery" from being declaried in scenery.cxx to being declared
authorcurt <curt>
Tue, 14 May 2002 05:22:52 +0000 (05:22 +0000)
committercurt <curt>
Tue, 14 May 2002 05:22:52 +0000 (05:22 +0000)
in globals.hxx.

21 files changed:
src/ATC/AIEntity.cxx
src/Autopilot/newauto.cxx
src/Cockpit/cockpit.cxx
src/FDM/ADA.cxx
src/FDM/JSBSim/JSBSim.cxx
src/FDM/LaRCsim.cxx
src/FDM/YASim/YASim.cxx
src/FDM/flight.cxx
src/Main/fg_init.cxx
src/Main/globals.hxx
src/Main/location.cxx
src/Main/main.cxx
src/Main/viewer.cxx
src/Network/atc610x.cxx
src/Network/native_ctrls.cxx
src/Scenery/scenery.cxx
src/Scenery/scenery.hxx
src/Scenery/tileentry.cxx
src/Scenery/tilemgr.cxx
src/Time/moonpos.cxx
src/Time/sunpos.cxx

index 2eb8ba1d662e2adf85d88eb31d56afb970dd0146..828b9dde8ee4479c1f6d550ecff941fc6b3aaa70 100644 (file)
@@ -46,7 +46,7 @@ void FGAIEntity::Update() {
 void FGAIEntity::Transform() {
 
     // Translate moving object w.r.t eye
-    Point3D sc = scenery.get_center();
+    Point3D sc = globals->get_scenery()->get_center();
     //cout << "sc0 = " << sc.x() << " sc1 = " << sc.y() << " sc2 = " << sc.z() << '\n';
     //cout << "op0 = " << obj_pos.x() << " op1 = " << obj_pos.y() << " op2 = " << obj_pos.z() << '\n';
 
index 7e12850c0fc59e97209765480449baee4eabff49..ccbf01cb4ee324aac7f00ffa40f929f7f4806cd8 100644 (file)
@@ -940,8 +940,8 @@ void FGAutopilot::AltitudeSet( double new_altitude ) {
        target_alt = new_altitude * SG_FEET_TO_METER;
     }
 
-    if( target_alt < scenery.get_cur_elev() ) {
-       target_alt = scenery.get_cur_elev();
+    if( target_alt < globals->get_scenery()->get_cur_elev() ) {
+       target_alt = globals->get_scenery()->get_cur_elev();
     }
 
     TargetAltitude = target_alt;
index f1bc1faea32ea36421c9cdec9d3afc024a65ffa1..94438273f89ebc4e86cbeb2345340b80dd59a2f2 100644 (file)
@@ -202,10 +202,10 @@ float get_agl( void )
 
     if ( !strcmp(startup_units_node->getStringValue(), "feet") ) {
         agl = (current_aircraft.fdm_state->get_Altitude()
-               - scenery.get_cur_elev() * SG_METER_TO_FEET);
+               - globals->get_scenery()->get_cur_elev() * SG_METER_TO_FEET);
     } else {
         agl = (current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-               - scenery.get_cur_elev());
+               - globals->get_scenery()->get_cur_elev());
     }
 
     return agl;
index 65de055990ba928144fb24a84d1dc9b566c2d98f..d20e44f321ddce0cf3f3a8c6f362b7b19a4a6a9a 100644 (file)
@@ -190,7 +190,7 @@ void FGADA::init() {
     copy_to_FGADA();
        // Write FGExternal structure from socket to establish connection
        int result = fdmsock->write(OutBuffer, nbytes);
-       printf("Connection established.\n");
+       printf("Connection established = %d.\n", result);
     }
 }
 
@@ -222,15 +222,15 @@ void FGADA::update( double dt ) {
 
     copy_to_FGADA();
     fgGetDouble("/sim/view/offset",view_offset);
-       if ( view_offset == 0.0) {
-         memcpy (&OutBuffer, &visuals_to_sixdof, sizeof (OutBuffer));
-                int result = fdmsock->write(OutBuffer, nbytes);
-       }
+    if ( view_offset == 0.0) {
+        memcpy (&OutBuffer, &visuals_to_sixdof, sizeof (OutBuffer));
+        fdmsock->write(OutBuffer, nbytes);
+    }
 }
 
 // Convert from the FGInterface struct to the FGADA struct (output)
 bool FGADA::copy_to_FGADA () {
-    ground_elevation = scenery.get_cur_elev();
+    ground_elevation = globals->get_scenery()->get_cur_elev();
     return true;
 }
 
index 4136e6b324afe66d7f2e45be0b6db467fa5494ea..76f2181f2d42b6307c37c3586a677f5c3a3d6648 100644 (file)
@@ -281,8 +281,9 @@ FGJSBsim::update( double dt ) {
       if ( startup_trim->getBoolValue() ) {
         SG_LOG(SG_FLIGHT, SG_INFO,
           "Ready to trim, terrain altitude is: " 
-            << scenery.get_cur_elev() * SG_METER_TO_FEET );
-        fgic->SetTerrainAltitudeFtIC( scenery.get_cur_elev() * SG_METER_TO_FEET );
+            << globals->get_scenery()->get_cur_elev() * SG_METER_TO_FEET );
+        fgic->SetTerrainAltitudeFtIC( globals->get_scenery()->get_cur_elev()
+                                      * SG_METER_TO_FEET );
         do_trim();
       } else {
         fdmex->RunIC(fgic);  //apply any changes made through the set_ functions
@@ -359,7 +360,8 @@ bool FGJSBsim::copy_to_JSBsim() {
       eng->SetStarter( globals->get_controls()->get_starter(i) );
     }
 
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET );
     Position->SetSeaLevelRadius( get_Sea_level_radius() );
     Position->SetRunwayRadius( get_Runway_altitude() 
                                + get_Sea_level_radius() );
@@ -576,8 +578,10 @@ void FGJSBsim::set_Latitude(double lat) {
                       &sea_level_radius_meters, &lat_geoc );
     _set_Sea_level_radius( sea_level_radius_meters * SG_METER_TO_FEET  );
     fgic->SetSeaLevelRadiusFtIC( sea_level_radius_meters * SG_METER_TO_FEET  );    
-    _set_Runway_altitude(  scenery.get_cur_elev() * SG_METER_TO_FEET  );
-    fgic->SetTerrainAltitudeFtIC( scenery.get_cur_elev() * SG_METER_TO_FEET  );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET  );
+    fgic->SetTerrainAltitudeFtIC( globals->get_scenery()->get_cur_elev()
+                                  * SG_METER_TO_FEET  );
     fgic->SetLatitudeRadIC( lat_geoc );
     needTrim=true;
 }
@@ -587,8 +591,10 @@ void FGJSBsim::set_Longitude(double lon) {
     SG_LOG(SG_FLIGHT,SG_INFO,"FGJSBsim::set_Longitude: " << lon );
     update_ic();
     fgic->SetLongitudeRadIC( lon );
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET  );
-    fgic->SetTerrainAltitudeFtIC( scenery.get_cur_elev() * SG_METER_TO_FEET  );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET  );
+    fgic->SetTerrainAltitudeFtIC( globals->get_scenery()->get_cur_elev()
+                                  * SG_METER_TO_FEET  );
     needTrim=true;
 }
 
@@ -605,10 +611,13 @@ void FGJSBsim::set_Altitude(double alt) {
                   &sea_level_radius_meters, &lat_geoc);
     _set_Sea_level_radius( sea_level_radius_meters * SG_METER_TO_FEET  );
     fgic->SetSeaLevelRadiusFtIC( sea_level_radius_meters * SG_METER_TO_FEET );
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET  );
-    fgic->SetTerrainAltitudeFtIC( scenery.get_cur_elev() * SG_METER_TO_FEET  );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET  );
+    fgic->SetTerrainAltitudeFtIC( globals->get_scenery()->get_cur_elev()
+                                  * SG_METER_TO_FEET  );
     SG_LOG(SG_FLIGHT, SG_INFO,
-          "Terrain altitude: " << scenery.get_cur_elev() * SG_METER_TO_FEET );
+          "Terrain altitude: " << globals->get_scenery()->get_cur_elev()
+           * SG_METER_TO_FEET );
     fgic->SetLatitudeRadIC( lat_geoc );
     fgic->SetAltitudeFtIC(alt);
     needTrim=true;
index 8051ef49f8166ab3799419fb33d7031c64643bae..78840a805996ca9de7a77444b3b8cdab9f6d8308 100644 (file)
@@ -188,7 +188,7 @@ void FGLaRCsim::update( double dt ) {
 
     // Inform LaRCsim of the local terrain altitude
     // Runway_altitude = get_Runway_altitude();
-    Runway_altitude = scenery.get_cur_elev() * SG_METER_TO_FEET;
+    Runway_altitude = globals->get_scenery()->get_cur_elev() * SG_METER_TO_FEET;
 
     // Weather
     /* V_north_airmass = get_V_north_airmass();
@@ -616,7 +616,8 @@ void FGLaRCsim::snap_shot(void) {
 void FGLaRCsim::set_Latitude(double lat) {
     SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Latitude: " << lat  );
     snap_shot();
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET );
     lsic->SetLatitudeGDRadIC(lat);
     set_ls();
     copy_from_LaRCsim(); //update the bus
@@ -626,7 +627,8 @@ void FGLaRCsim::set_Longitude(double lon) {
     SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Longitude: " << lon  );
     snap_shot();
     
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET );
     lsic->SetLongitudeRadIC(lon);
     set_ls();
     copy_from_LaRCsim(); //update the bus
@@ -635,7 +637,8 @@ void FGLaRCsim::set_Longitude(double lon) {
 void FGLaRCsim::set_Altitude(double alt) {
     SG_LOG( SG_FLIGHT, SG_INFO, "FGLaRCsim::set_Altitude: " << alt  );
     snap_shot();
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET );
     lsic->SetAltitudeFtIC(alt);
     set_ls();
     copy_from_LaRCsim(); //update the bus
index faaaf5fe794b8823e7c5aa861af47aedcf24b6d7..6a6ba7971f87242d06a4ca17413bf45ed6feb306 100644 (file)
@@ -233,7 +233,7 @@ void YASim::copyToYASim(bool copyState)
 
     // The ground elevation doesn't come from FGInterface; query it
     // from the scenery and set it for others to find.
-    double ground = scenery.get_cur_elev();
+    double ground = globals->get_scenery()->get_cur_elev();
     _set_Runway_altitude(ground * FT2M);
     // cout << "YASIM: ground = " << ground << endl;
 
index 76f93e2a4c46933666ecb3c2568113107d898d91..2845c8e3b35be515dbc93c37ba35fdb56d37b10f 100644 (file)
@@ -188,7 +188,7 @@ FGInterface::common_init ()
                    * SGD_DEGREES_TO_RADIANS );
     set_Latitude( fgGetDouble("/position/latitude-deg")
                   * SGD_DEGREES_TO_RADIANS );
-    double ground_elev_m = scenery.get_cur_elev();
+    double ground_elev_m = globals->get_scenery()->get_cur_elev();
     double ground_elev_ft = ground_elev_m * SG_METER_TO_FEET;
     if ( fgGetBool("/sim/startup/onground")
          || fgGetDouble("/position/altitude-ft") < ground_elev_ft ) {
@@ -448,7 +448,8 @@ void FGInterface::_updateGeodeticPosition( double lat, double lon, double alt )
     _set_Geodetic_Position( lat, lon, alt );
 
     _set_Sea_level_radius( sl_radius * SG_METER_TO_FEET );
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET );
 
     _set_sin_lat_geocentric( lat_geoc );
     _set_cos_lat_geocentric( lat_geoc );
@@ -504,7 +505,8 @@ void FGInterface::_updateGeocentricPosition( double lat_geoc, double lon,
     _set_Geodetic_Position( lat_geod, lon, alt );
 
     _set_Sea_level_radius( sl_radius2 * SG_METER_TO_FEET );
-    _set_Runway_altitude( scenery.get_cur_elev() * SG_METER_TO_FEET );
+    _set_Runway_altitude( globals->get_scenery()->get_cur_elev()
+                          * SG_METER_TO_FEET );
 
     _set_sin_lat_geocentric( lat_geoc );
     _set_cos_lat_geocentric( lat_geoc );
index 7ec9eaa977487ae9370d6830a49d6dd7256fefda..5803f952c8192afed150fd80584701d821a147c8 100644 (file)
@@ -493,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");
@@ -591,7 +592,7 @@ void fgInitFDM() {
            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;
@@ -744,8 +745,9 @@ bool fgInitSubsystems( void ) {
     // Initialize the scenery management subsystem.
     ////////////////////////////////////////////////////////////////////
 
-    scenery.init();
-    scenery.bind();
+    globals->set_scenery( new FGScenery );
+    globals->get_scenery()->init();
+    globals->get_scenery()->bind();
 
     if ( global_tile_mgr.init() ) {
        // Load the local scenery data
@@ -761,7 +763,7 @@ bool fgInitSubsystems( void ) {
 
     SG_LOG( SG_GENERAL, SG_DEBUG,
            "Current terrain elevation after tile mgr init " <<
-           scenery.get_cur_elev() );
+           globals->get_scenery()->get_cur_elev() );
 
 
     ////////////////////////////////////////////////////////////////////
@@ -1101,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();
     
index a5ecfd48a6ba83058782f3449d74d92ef87a0f2f..af8dd7f991688f852736143e57dc480ac36431c1 100644 (file)
@@ -66,6 +66,7 @@ class FGATCDisplay;
 class FGAIMgr;
 class FGAircraftModel;
 class FGModelMgr;
+class FGScenery;
 
 class ssgRoot;
 class ssgBranch;
@@ -161,6 +162,9 @@ private:
     // list of serial port-like configurations
     string_list *channel_options_list;
 
+    // FlightGear scenery manager
+    FGScenery *scenery;
+
     // SSG scene graph
     ssgRoot * scene_graph;
     ssgBranch * terrain_branch;
@@ -277,6 +281,9 @@ public:
        channel_options_list = l;
     }
 
+    inline FGScenery * get_scenery () const { return scenery; }
+    inline void set_scenery ( FGScenery *s ) { scenery = s; }
+
     inline ssgRoot * get_scene_graph () const { return scene_graph; }
     inline void set_scene_graph (ssgRoot * s) { scene_graph = s; }
 
index f8c776b2d2d86b253bb9ff8ca95748374f263194..84f421822ee3080885baecdbad10da5f2fb48bd4 100644 (file)
 #include <simgear/math/point3d.hxx>
 #include <simgear/math/polar3d.hxx>
 #include <simgear/math/sg_geodesy.hxx>
+#include <simgear/math/vector.hxx>
 
 #include <Scenery/scenery.hxx>
-
-#include <simgear/math/vector.hxx>
-/*
 #include "globals.hxx"
-*/
 
 #include "location.hxx"
 
@@ -244,7 +241,7 @@ FGLocation::recalcPosition (double lon_deg, double lat_deg, double alt_ft) const
   Point3D p = Point3D(lon_deg * SG_DEGREES_TO_RADIANS,
                      lat_geoc_rad,
                      sea_level_radius_m);
-  Point3D tmp = sgPolarToCart3d(p) - scenery.get_next_center();
+  Point3D tmp = sgPolarToCart3d(p) - globals->get_scenery()->get_next_center();
   sgSetVec3(_zero_elev_view_pos, tmp[0], tmp[1], tmp[2]);
 
                                // Calculate the absolute view position
@@ -259,9 +256,9 @@ FGLocation::recalcPosition (double lon_deg, double lat_deg, double alt_ft) const
                                 // aka Relative View Position
   sgdVec3 scenery_center;
   sgdSetVec3(scenery_center,
-            scenery.get_next_center().x(),
-            scenery.get_next_center().y(),
-            scenery.get_next_center().z());
+            globals->get_scenery()->get_next_center().x(),
+            globals->get_scenery()->get_next_center().y(),
+            globals->get_scenery()->get_next_center().z());
   sgdVec3 view_pos;
   sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
   sgSetVec3(_relative_view_pos, view_pos);
index 9880c31fa8ddc6414b175758b827f928ffeed905..cf6f521bb348e83e719aa91b5f9c9ac293e4a99e 100644 (file)
@@ -445,7 +445,7 @@ void fgRenderFrame() {
        // now work without seg faulting the system.
 
        // calculate our current position in cartesian space
-       scenery.set_center( scenery.get_next_center() );
+       globals->get_scenery()->set_center( globals->get_scenery()->get_next_center() );
 
        // update view port
        fgReshape( fgGetInt("/sim/startup/xsize"),
@@ -584,8 +584,9 @@ void fgRenderFrame() {
        ssgSetFOV( current__view->get_h_fov(),
                   current__view->get_v_fov() );
 
-       double agl = current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-           - scenery.get_cur_elev();
+       double agl =
+            current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
+           - globals->get_scenery()->get_cur_elev();
 
         if ( agl > 10.0 ) {
             scene_nearplane = 10.0f;
@@ -769,7 +770,9 @@ void fgUpdateTimeDepCalcs() {
     // cout << "cur_fdm_state->get_inited() = " << cur_fdm_state->get_inited() 
     //      << " cur_elev = " << scenery.get_cur_elev() << endl;
 
-    if ( !cur_fdm_state->get_inited() && scenery.get_cur_elev() > -9990 ) {
+    if ( !cur_fdm_state->get_inited() &&
+         globals->get_scenery()->get_cur_elev() > -9990 )
+    {
        SG_LOG(SG_FLIGHT,SG_INFO, "Finally initializing fdm");  
        
        cur_fdm_state->init();
@@ -897,16 +900,18 @@ static void fgMainLoop( void ) {
           cur_fdm_state->get_Runway_altitude() * SG_FEET_TO_METER,
           cur_fdm_state->get_Altitude() * SG_FEET_TO_METER); */
 
-    if ( scenery.get_cur_elev() > -9990 && cur_fdm_state->get_inited() ) {
+    if ( globals->get_scenery()->get_cur_elev() > -9990
+         && cur_fdm_state->get_inited() )
+    {
        if ( cur_fdm_state->get_Altitude() * SG_FEET_TO_METER < 
-            (scenery.get_cur_elev() + alt_adjust_m - 3.0) ) {
+            (globals->get_scenery()->get_cur_elev() + alt_adjust_m - 3.0) ) {
            // now set aircraft altitude above ground
            printf("(*) Current Altitude = %.2f < %.2f forcing to %.2f\n", 
                   cur_fdm_state->get_Altitude() * SG_FEET_TO_METER,
-                  scenery.get_cur_elev() + alt_adjust_m - 3.0,
-                  scenery.get_cur_elev() + alt_adjust_m );
-           cur_fdm_state->set_Altitude( scenery.get_cur_elev() 
-                                                + alt_adjust_m );
+                  globals->get_scenery()->get_cur_elev() + alt_adjust_m - 3.0,
+                  globals->get_scenery()->get_cur_elev() + alt_adjust_m );
+           cur_fdm_state->set_Altitude( globals->get_scenery()->get_cur_elev() 
+                                         + alt_adjust_m );
 
            SG_LOG( SG_ALL, SG_DEBUG, 
                    "<*> resetting altitude to " 
@@ -1850,7 +1855,7 @@ void fgUpdateDCS (void) {
         Point3D obj_pos = sgGeodToCart( obj_posn );
 
         // Translate moving object w.r.t eye
-        Point3D Objtrans = obj_pos-scenery.get_center();
+        Point3D Objtrans = obj_pos - globals->get_scenery()->get_center();
         bz[0]=Objtrans.x();
         bz[1]=Objtrans.y();
         bz[2]=Objtrans.z();
index c099de9fab67549fff11b075c3594acf191da72f..8efc1e0d770e8db801ad68a3a39c844e3d6df4d4 100644 (file)
@@ -654,7 +654,7 @@ FGViewer::recalcPositionVectors (double lon_deg, double lat_deg, double alt_ft)
   Point3D p = Point3D(lon_deg * SG_DEGREES_TO_RADIANS,
                      lat_geoc_rad,
                      sea_level_radius_m);
-  Point3D tmp = sgPolarToCart3d(p) - scenery.get_next_center();
+  Point3D tmp = sgPolarToCart3d(p) - globals->get_scenery()->get_next_center();
   sgSetVec3(_zero_elev_view_pos, tmp[0], tmp[1], tmp[2]);
 
                                // Calculate the absolute view position
@@ -669,9 +669,9 @@ FGViewer::recalcPositionVectors (double lon_deg, double lat_deg, double alt_ft)
                                 // aka Relative View Position
   sgdVec3 scenery_center;
   sgdSetVec3(scenery_center,
-            scenery.get_next_center().x(),
-            scenery.get_next_center().y(),
-            scenery.get_next_center().z());
+            globals->get_scenery()->get_next_center().x(),
+            globals->get_scenery()->get_next_center().y(),
+            globals->get_scenery()->get_next_center().z());
   sgdVec3 view_pos;
   sgdSubVec3(view_pos, _absolute_view_pos, scenery_center);
   sgSetVec3(_relative_view_pos, view_pos);
index ae0c3bcee1c256f84763e88ff61a77cd2322cb78..c30a5ce2f09d60ca4d713e948b7b1943b7544d20 100644 (file)
@@ -272,9 +272,17 @@ bool FGATC610x::open() {
     // Release the hardware
     ATC610xRelease( lock_fd );
 
+    SG_LOG( SG_IO, SG_ALERT,
+           "  - Waiting for compass to come home." );
+
     bool home = false;
+    int timeout = 900;          // about 30 seconds
     while ( ! home ) {
-       SG_LOG( SG_IO, SG_DEBUG, "Checking if compass home ..." );
+        if ( timeout % 150 == 0 ) {
+            SG_LOG( SG_IO, SG_INFO, "waiting for compass = " << timeout );
+        } else {
+            SG_LOG( SG_IO, SG_DEBUG, "Checking if compass home ..." );
+        }
 
        while ( ATC610xLock( lock_fd ) <= 0 );
 
@@ -292,6 +300,8 @@ bool FGATC610x::open() {
 #else
        usleep(33);
 #endif
+
+        --timeout;
     }
 
     compass_position = 0.0;
index e09763749c41050763b93079416649ee2f1016de..6f512b8e5ac82a6a281073d447e3eba92e5f2c07 100644 (file)
@@ -75,7 +75,7 @@ static void global2raw( const FGControls *global, FGRawCtrls *raw ) {
        raw->brake[i] =  globals->get_controls()->get_brake(i);
     }
 
-    raw->hground = scenery.get_cur_elev();
+    raw->hground = globals->get_scenery()->get_cur_elev();
 }
 
 
@@ -97,7 +97,7 @@ static void raw2global( const FGRawCtrls *raw, FGControls *global ) {
            globals->get_controls()->set_brake( i, raw->brake[i] );
        }
        globals->get_controls()->set_gear_down( raw->gear_handle );
-       scenery.set_cur_elev( raw->hground );
+       globals->get_scenery()->set_cur_elev( raw->hground );
     } else {
        SG_LOG( SG_IO, SG_ALERT, "Error: version mismatch in raw2global()" );
        SG_LOG( SG_IO, SG_ALERT,
index 51891c0621826ac6a202564adc8a9df96759e10e..66b0536843e2b249e4737f11ccc55c0b04ceddc3 100644 (file)
 #include "scenery.hxx"
 
 
-// Shared structure to hold current scenery parameters
-FGScenery scenery;
-
-
 // Scenery Management system
 FGScenery::FGScenery() {
     SG_LOG( SG_TERRAIN, SG_INFO, "Initializing scenery subsystem" );
index 45ae6a9d73697af9d9f705e2317dd1eb0d775928..53724bae4f3c921c7aedac6e902248723603e9bc 100644 (file)
@@ -83,13 +83,6 @@ public:
 };
 
 
-extern FGScenery scenery;
-
-
-// Initialize the Scenery Management system
-int fgSceneryInit( void );
-
-
 #endif // _SCENERY_HXX
 
 
index 9994737656e3423c2be67928208375f13e04b068..94636db1f341b221dde26f17c463e2c60a85c033 100644 (file)
@@ -799,7 +799,7 @@ void FGTileEntry::prep_ssg_node( const Point3D& p, sgVec3 up, float vis) {
        double agl;
        if ( current_aircraft.fdm_state ) {
            agl = current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-               - scenery.get_cur_elev();
+               - globals->get_scenery()->get_cur_elev();
        } else {
            agl = 0.0;
        }
@@ -847,7 +847,7 @@ void FGTileEntry::prep_ssg_node( const Point3D& p, sgVec3 up, float vis) {
        double agl;
        if ( current_aircraft.fdm_state ) {
            agl = current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-               - scenery.get_cur_elev();
+               - globals->get_scenery()->get_cur_elev();
        } else {
            agl = 0.0;
        }
@@ -902,7 +902,7 @@ void FGTileEntry::prep_ssg_node( const Point3D& p, sgVec3 up, float vis) {
             double agl1;
             if ( current_aircraft.fdm_state ) {
                 agl1 = current_aircraft.fdm_state->get_Altitude() * SG_FEET_TO_METER
-                    - scenery.get_cur_elev();
+                    - globals->get_scenery()->get_cur_elev();
             } else {
                 agl1 = 0.0;
             }
@@ -1286,7 +1286,7 @@ FGTileEntry::load( const SGPath& base, bool is_base )
     terra_transform->addKid( terra_range );
 
     // calculate initial tile offset
-    SetOffset( scenery.get_center() );
+    SetOffset( globals->get_scenery()->get_center() );
     sgCoord sgcoord;
     sgSetCoord( &sgcoord,
                offset.x(), offset.y(), offset.z(),
index 19a46febf8331c76f9bdc70560b8a034a925af67..0ed9903cc199b65d2c143212acb1d3e3cca8ae89 100644 (file)
@@ -261,10 +261,10 @@ int FGTileMgr::update( double lon, double lat, double visibility_meters ) {
 
     if ( tile_cache.exists( current_bucket ) ) {
         current_tile = tile_cache.get_tile( current_bucket );
-        scenery.set_next_center( current_tile->center );
+        globals->get_scenery()->set_next_center( current_tile->center );
     } else {
         SG_LOG( SG_TERRAIN, SG_WARN, "Tile not found (Ok if initializing)" );
-        scenery.set_next_center( Point3D(0.0) );
+        globals->get_scenery()->set_next_center( Point3D(0.0) );
     }
 
     if ( state == Running ) {
@@ -338,40 +338,12 @@ int FGTileMgr::update( double lon, double lat, double visibility_meters ) {
 
     sgdVec3 sc;
     sgdSetVec3( sc,
-                scenery.get_center()[0],
-                scenery.get_center()[1],
-                scenery.get_center()[2] );
-
-#if 0
-    if ( scenery.center == Point3D(0.0) ) {
-       // initializing
-       cout << "initializing scenery current elevation ... " << endl;
-       sgdVec3 tmp_abs_view_pos;
-
-       Point3D geod_pos = Point3D( longitude * SGD_DEGREES_TO_RADIANS,
-                                   latitude * SGD_DEGREES_TO_RADIANS,
-                                   0.0);
-       Point3D tmp = sgGeodToCart( geod_pos );
-       scenery.center = tmp;
-       sgdSetVec3( tmp_abs_view_pos, tmp.x(), tmp.y(), tmp.z() );
-
-       // cout << "abs_view_pos = " << tmp_abs_view_pos << endl;
-       prep_ssg_nodes(visibility_meters);
-
-       double tmp_elev;
-       if ( fgCurrentElev(tmp_abs_view_pos, sc, &hit_list,
-                          &tmp_elev, &scenery.cur_radius, scenery.cur_normal) )
-       {
-           scenery.set_cur_elev( tmp_elev );
-       } else {
-           scenery.set_cur_elev( 0.0 );
-       }
-       // cout << "result = " << scenery.get_cur_elev() << endl;
-    } else {
-#endif
+                globals->get_scenery()->get_center()[0],
+                globals->get_scenery()->get_center()[1],
+                globals->get_scenery()->get_center()[2] );
 
          /*
-       cout << "abs view pos = "
+         cout << "abs view pos = "
               << globals->get_current_view()->get_abs_view_pos()[0] << ","
               << globals->get_current_view()->get_abs_view_pos()[1] << ","
               << globals->get_current_view()->get_abs_view_pos()[2]
@@ -396,9 +368,9 @@ int FGTileMgr::update( double lon, double lat, double visibility_meters ) {
             // scenery center has been properly defined so any hit
             // should be valid (and not just luck)
            sgdSetVec3( sc,
-                       scenery.get_center()[0],
-                       scenery.get_center()[1],
-                       scenery.get_center()[2] );
+                       globals->get_scenery()->get_center()[0],
+                       globals->get_scenery()->get_center()[1],
+                       globals->get_scenery()->get_center()[2] );
            hit = fgCurrentElev(globals->get_current_view()->get_absolute_view_pos(),
                                sc,
                                current_tile->get_terra_transform(),
@@ -409,13 +381,13 @@ int FGTileMgr::update( double lon, double lat, double visibility_meters ) {
         }
 
         if ( hit ) {
-            scenery.set_cur_elev( hit_elev );
-            scenery.set_cur_radius( hit_radius );
-            scenery.set_cur_normal( hit_normal );
+            globals->get_scenery()->set_cur_elev( hit_elev );
+            globals->get_scenery()->set_cur_radius( hit_radius );
+            globals->get_scenery()->set_cur_normal( hit_normal );
         } else {
-            scenery.set_cur_elev( -9999.0 );
-            scenery.set_cur_radius( 0.0 );
-            scenery.set_cur_normal( hit_normal );
+            globals->get_scenery()->set_cur_elev( -9999.0 );
+            globals->get_scenery()->set_cur_radius( 0.0 );
+            globals->get_scenery()->set_cur_normal( hit_normal );
         }
        // cout << "Current elevation = " << scenery.get_cur_elev() << endl;
 
@@ -444,7 +416,7 @@ void FGTileMgr::prep_ssg_nodes(float vis) {
     while ( ! tile_cache.at_end() ) {
         // cout << "processing a tile" << endl;
        if ( (e = tile_cache.get_current()) ) {
-           e->prep_ssg_node( scenery.get_center(), up, vis);
+           e->prep_ssg_node( globals->get_scenery()->get_center(), up, vis);
         } else {
            SG_LOG(SG_INPUT, SG_ALERT, "warning ... empty tile in cache");
         }
index a3bb711df6900fa75bdc090e882dd5f8cc61ebe0..4c88c6c91b70f6d157cdca31383abe8710561918 100644 (file)
@@ -400,7 +400,7 @@ void fgUpdateMoonPos( void ) {
     Point3D vp( v->get_view_pos()[0],
                v->get_view_pos()[1],
                v->get_view_pos()[2] );
-    rel_moonpos = l->fg_moonpos - ( vp + scenery.get_center() );
+    rel_moonpos = l->fg_moonpos - ( vp + globals->get_scenery()->get_center() );
     sgSetVec3( to_moon, rel_moonpos.x(), rel_moonpos.y(), rel_moonpos.z() );
     // printf( "Vector to moon = %.2f %.2f %.2f\n",
     //         to_moon[0], to_moon[1], to_moon[2]);
index 1fff609cf531304df229648f1947ad528cffde81..ebc45f9d5f3dc50219e928712b0c101145d68660 100644 (file)
@@ -307,7 +307,7 @@ void fgUpdateSunPos( void ) {
     Point3D vp( v->get_view_pos()[0],
                v->get_view_pos()[1],
                v->get_view_pos()[2] );
-    rel_sunpos = l->fg_sunpos - ( vp + scenery.get_center() );
+    rel_sunpos = l->fg_sunpos - ( vp + globals->get_scenery()->get_center() );
     sgSetVec3( to_sun, rel_sunpos.x(), rel_sunpos.y(), rel_sunpos.z() );
     // printf( "Vector to sun = %.2f %.2f %.2f\n",
     //         v->to_sun[0], v->to_sun[1], v->to_sun[2]);