]> git.mxchange.org Git - flightgear.git/commitdiff
Update FGViewer position clients to work with SGGeod directly
authorjmt <jmt>
Tue, 9 Jun 2009 12:16:21 +0000 (12:16 +0000)
committerTim Moore <timoore@redhat.com>
Thu, 11 Jun 2009 14:05:20 +0000 (16:05 +0200)
src/AIModel/AIAircraft.cxx
src/ATCDCL/AILocalTraffic.cxx
src/Main/main.cxx
src/Main/viewer.hxx
src/Sound/fg_fx.cxx

index 6559bbcbd7ffee1c014d01c772b3feec8e7822c5..a9e22a723a9c57063f868c71a42d79f6ea1b137d 100644 (file)
@@ -167,19 +167,9 @@ void FGAIAircraft::setPerformance(const std::string& acclass) {
 
 void FGAIAircraft::checkVisibility() 
 {
-     double visibility_meters = fgGetDouble("/environment/visibility-m");
-
-     FGViewer* vw = globals->get_current_view();
-     double course, distance;
-
-     SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
-     SGWayPoint view (vw->getLongitude_deg(), vw->getLatitude_deg(), 0);
-     view.CourseAndDistance(current, &course, &distance);
-     if (distance > visibility_meters) {
-         invisible = true;
-      } else {
-         invisible = false;
-      }
+  double visibility_meters = fgGetDouble("/environment/visibility-m");
+  FGViewer* vw = globals->get_current_view();
+  invisible = (SGGeodesy::distanceM(vw->getPosition(), pos) > visibility_meters);
 }
 
 
@@ -409,14 +399,9 @@ void FGAIAircraft::getGroundElev(double dt) {
     // Only do the proper hitlist stuff if we are within visible range of the viewer.
     if (!invisible) {
         double visibility_meters = fgGetDouble("/environment/visibility-m");
-
         FGViewer* vw = globals->get_current_view();
-        double course, distance;
-
-        SGWayPoint current(pos.getLongitudeDeg(), pos.getLatitudeDeg(), 0);
-        SGWayPoint view (vw->getLongitude_deg(), vw->getLatitude_deg(), 0);
-        view.CourseAndDistance(current, &course, &distance);
-        if (distance > visibility_meters) {
+        
+        if (SGGeodesy::distanceM(vw->getPosition(), pos) > visibility_meters) {
             return;
         }
 
index 0e81570aeb5b9f1c7137ab19b3a777556f3609c0..4a5dfaa3b15268d2a32f63be3e7b139e8e70141f 100644 (file)
@@ -1539,21 +1539,21 @@ void FGAILocalTraffic::DoGroundElev() {
        // Only do the proper hitlist stuff if we are within visible range of the viewer.
        double visibility_meters = fgGetDouble("/environment/visibility-m");
        FGViewer* vw = globals->get_current_view();
-       if(dclGetHorizontalSeparation(_pos, SGGeod::fromDegM(vw->getLongitude_deg(), vw->getLatitude_deg(), 0.0)) > visibility_meters) {
+       if(dclGetHorizontalSeparation(_pos, SGGeod::fromGeodM(vw->getPosition(), 0.0)) > visibility_meters) {
                _ground_elevation_m = aptElev;
                return;
        }
 
-        // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
-        double range = 500.0;
-        if (!globals->get_tile_mgr()->scenery_available(_aip.getPosition(), range)) {
-          // Try to shedule tiles for that position.
-          globals->get_tile_mgr()->update( _aip.getPosition(), range );
-        }
+  // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
+  double range = 500.0;
+  if (!globals->get_tile_mgr()->scenery_available(_aip.getPosition(), range)) {
+    // Try to shedule tiles for that position.
+    globals->get_tile_mgr()->update( _aip.getPosition(), range );
+  }
 
-        // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
-        double alt;
-        if (globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(_aip.getPosition(), 20000), alt, 0))
-          _ground_elevation_m = alt;
+  // FIXME: make shure the pos.lat/pos.lon values are in degrees ...
+  double alt;
+  if (globals->get_scenery()->get_elevation_m(SGGeod::fromGeodM(_aip.getPosition(), 20000), alt, 0))
+    _ground_elevation_m = alt;
 }
 
index c7312396620b93bbea30be85d7da26a78577ff22..b864563ea83930a0e79fda6be6cc4d29d10cec0d 100644 (file)
@@ -496,8 +496,7 @@ static void fgMainLoop( void ) {
 
     // get the orientation
     const SGQuatd view_or = current_view->getViewOrientation();
-    SGQuatd surf_or = SGQuatd::fromLonLatDeg(
-        current_view->getLongitude_deg(), current_view->getLatitude_deg());
+    SGQuatd surf_or = SGQuatd::fromLonLat(current_view->getPosition());
     SGQuatd model_or = SGQuatd::fromYawPitchRollDeg(
         globals->get_aircraft_model()->get3DModel()->getHeadingDeg(),
         globals->get_aircraft_model()->get3DModel()->getPitchDeg(),
index 455f8f1fd4fd9f9b7bd10b28d9aee612f7057ec1..50d56743974db75c965e6755c67cf4d8f689f733 100644 (file)
@@ -103,13 +103,9 @@ public:
     //   pilot view, model in model view).
     //   FIXME: the model view position (ie target positions) 
     //   should be in the model class.
-    virtual double getLongitude_deg () const { return _position.getLongitudeDeg(); }
-    virtual double getLatitude_deg () const { return _position.getLatitudeDeg(); }
     virtual void setPosition (double lon_deg, double lat_deg, double alt_ft);
     const SGGeod& getPosition() const { return _position; }
 
-
     // Reference geodetic target position...
     virtual void setTargetPosition (double lon_deg, double lat_deg, double alt_ft);
     const SGGeod& getTargetPosition() const { return _target; }
index eb7abd1eb47ebca64f7aaa5f524c2430c8877362..1774b3a63423a2853bf6480c18d339030a011432 100644 (file)
@@ -226,9 +226,8 @@ FGFX::update_pos_and_orientation(SGSoundMgr *smgr, double dt)
 
     // get the orientation
     const SGQuatd view_or = observer->getViewOrientation();
-    SGQuatd surf_or = SGQuatd::fromLonLatDeg(
-                                observer->getLongitude_deg(),
-                                observer->getLatitude_deg());
+    SGQuatd surf_or = SGQuatd::fromLonLat(observer->getPosition());
+    
     SGQuatd model_or = SGQuatd::fromYawPitchRollDeg(
                                 model->getHeadingDeg(),
                                 model->getPitchDeg(),