]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/environment_mgr.cxx
Merge branch 'next' of D:\Git_New\flightgear into next
[flightgear.git] / src / Environment / environment_mgr.cxx
index 30a1520a30faa0c1411567902df337a66075aeec..c23c61a47c5cd22e81311295988f7e5f8f00dde1 100644 (file)
@@ -32,7 +32,6 @@
 
 #include <Main/main.hxx>
 #include <Main/fg_props.hxx>
-#include <Aircraft/aircraft.hxx>
 #include <FDM/flight.hxx>
 
 #include "environment.hxx"
@@ -52,12 +51,12 @@ FGEnvironmentMgr::FGEnvironmentMgr ()
 
   _controller = new FGInterpolateEnvironmentCtrl;
   _controller->setEnvironment(_environment);
-  set_subsystem("controller", _controller, 0.5);
+  set_subsystem("controller", _controller, 0.);
 
   fgClouds = new FGClouds();
 
-  _metarcontroller = new FGMetarCtrl(_controller);
-  set_subsystem("metarcontroller", _metarcontroller, 0.25 );
+  _metarcontroller = new FGMetarCtrl(_controller );
+  set_subsystem("metarcontroller", _metarcontroller, 0.1 );
 
   _metarfetcher = new FGMetarFetcher();
   set_subsystem("metarfetcher", _metarfetcher, 1.0 );
@@ -90,7 +89,7 @@ FGEnvironmentMgr::init ()
 {
   SG_LOG( SG_GENERAL, SG_INFO, "Initializing environment subsystem");
   SGSubsystemGroup::init();
-  _update_fdm();
+  //_update_fdm();
 }
 
 void
@@ -98,7 +97,7 @@ FGEnvironmentMgr::reinit ()
 {
   SG_LOG( SG_GENERAL, SG_INFO, "Reinitializing environment subsystem");
   SGSubsystemGroup::reinit();
-  _update_fdm();
+  //_update_fdm();
 }
 
 void
@@ -166,9 +165,12 @@ FGEnvironmentMgr::bind ()
   fgSetArchivable("/environment/thermal-lift-fps");
   fgTie("/environment/ridge-lift-fps", _environment,
        &FGEnvironment::get_ridge_lift_fps,
-       &FGEnvironment::set_ridge_lift_fps);
+       &FGEnvironment::set_ridge_lift_fps);    
   fgSetArchivable("/environment/ridge-lift-fps");
-
+  
+    fgTie("/environment/local-weather-lift", _environment,
+       &FGEnvironment::get_local_weather_lift_fps); //read-only
+     
   fgTie("/environment/turbulence/magnitude-norm", _environment,
         &FGEnvironment::get_turbulence_magnitude_norm,
         &FGEnvironment::set_turbulence_magnitude_norm);
@@ -255,6 +257,7 @@ FGEnvironmentMgr::unbind ()
 
   fgUntie("/environment/thermal-lift-fps");
   fgUntie("/environment/ridge-lift-fps");
+  fgUntie("/environment/local-weather-lift");
 
   fgUntie("/environment/atmosphere/altitude-half-to-sun");
   fgUntie("/environment/atmosphere/altitude-troposphere-top");
@@ -286,19 +289,25 @@ void
 FGEnvironmentMgr::update (double dt)
 {
   SGSubsystemGroup::update(dt);
-
-                               // FIXME: the FDMs should update themselves
-  current_aircraft.fdm_state
-    ->set_Velocities_Local_Airmass(_environment->get_wind_from_north_fps(),
-                                  _environment->get_wind_from_east_fps(),
-                                  _environment->get_wind_from_down_fps());
+  
   _environment->set_elevation_ft(fgGetDouble("/position/altitude-ft"));
-  osg::Vec3 windVec(-_environment->get_wind_from_north_fps(),
+  _environment->set_local_weather_lift_fps(fgGetDouble("/local-weather/current/thermal-lift"));
+  osg::Vec3 windVec(_environment->get_wind_from_north_fps(),
                     -_environment->get_wind_from_east_fps(),
-                    _environment->get_wind_from_down_fps());
-  simgear::Particles::setWindVector(windVec * SG_FEET_TO_METER);
+                    0);
+         // SG_LOG(SG_GENERAL, SG_ALERT, "-_environment->get_wind_from_north_mps() " <<
+                  //_environment->get_wind_from_north_fps() * SG_FEET_TO_METER
+                  //<< " -_environment->get_wind_from_east_mps() " 
+                  //<< -_environment->get_wind_from_east_fps() * SG_FEET_TO_METER
+                  //);
+
+  // simgear::Particles::setWindVector(windVec * SG_FEET_TO_METER);
+  simgear::Particles::setWindFrom( _environment->get_wind_from_heading_deg(),
+                                  _environment->get_wind_speed_kt() );
+  //double wind_true_deg = _environment->get_wind_from_heading_deg();
+  //simgear::Particles::setWindFrom( wind_true_deg,
+  //                                _environment->get_wind_speed_kt() );
 
-  _update_fdm();
 }
 
 FGEnvironment
@@ -330,27 +339,6 @@ FGEnvironmentMgr::getEnvironment(const SGGeod& aPos) const
 
 }
 
-void
-FGEnvironmentMgr::_update_fdm () const
-{
-  //
-  // Pass atmosphere on to FDM
-  // FIXME: have FDMs read properties directly.
-  //
-  if (fgGetBool("/environment/params/control-fdm-atmosphere")) {
-                               // convert from Rankine to Celsius
-    cur_fdm_state
-      ->set_Static_temperature((9.0/5.0)
-                              * (_environment->get_temperature_degc() + 273.15));
-                               // convert from inHG to PSF
-    cur_fdm_state
-      ->set_Static_pressure(_environment->get_pressure_inhg() * 70.726566);
-                               // keep in slugs/ft^3
-    cur_fdm_state
-      ->set_Density(_environment->get_density_slugft3());
-  }
-}
-
 double
 FGEnvironmentMgr::get_cloud_layer_span_m (int index) const
 {