]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/environment_mgr.cxx
Merge branch 'next' of git://gitorious.org/fg/flightgear into next
[flightgear.git] / src / Environment / environment_mgr.cxx
index acf20b861ed86f18059c2991cf8401dc874b84a6..c810222580c44a5ce75a9f437ba0b65a91dd2b11 100644 (file)
@@ -24,6 +24,8 @@
 #  include <config.h>
 #endif
 
+#include <cstring>
+
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
 #include <simgear/scene/sky/sky.hxx>
@@ -32,7 +34,6 @@
 
 #include <Main/main.hxx>
 #include <Main/fg_props.hxx>
-#include <Aircraft/aircraft.hxx>
 #include <FDM/flight.hxx>
 
 #include "environment.hxx"
@@ -40,6 +41,7 @@
 #include "environment_ctrl.hxx"
 #include "fgclouds.hxx"
 #include "precipitation_mgr.hxx"
+#include "ridge_lift.hxx"
 
 class SGSky;
 extern SGSky *thesky;
@@ -64,10 +66,18 @@ FGEnvironmentMgr::FGEnvironmentMgr ()
 
   _precipitationManager = new FGPrecipitationMgr;
   set_subsystem("precipitation", _precipitationManager);
+
+  set_subsystem("ridgelift", new FGRidgeLift);
 }
 
 FGEnvironmentMgr::~FGEnvironmentMgr ()
 {
+  SGSubsystem * subsys;
+
+  subsys = get_subsystem( "ridgelift" );
+  remove_subsystem( "ridgelift" );
+  delete subsys;
+
   remove_subsystem("precipitation");
   delete _precipitationManager;
 
@@ -90,7 +100,7 @@ FGEnvironmentMgr::init ()
 {
   SG_LOG( SG_GENERAL, SG_INFO, "Initializing environment subsystem");
   SGSubsystemGroup::init();
-  _update_fdm();
+  //_update_fdm();
 }
 
 void
@@ -98,7 +108,7 @@ FGEnvironmentMgr::reinit ()
 {
   SG_LOG( SG_GENERAL, SG_INFO, "Reinitializing environment subsystem");
   SGSubsystemGroup::reinit();
-  _update_fdm();
+  //_update_fdm();
 }
 
 void
@@ -290,20 +300,15 @@ 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"));
   _environment->set_local_weather_lift_fps(fgGetDouble("/local-weather/current/thermal-lift"));
-  osg::Vec3 windVec(-_environment->get_wind_from_north_fps(),
+  osg::Vec3 windVec(_environment->get_wind_from_north_fps(),
                     -_environment->get_wind_from_east_fps(),
-                    _environment->get_wind_from_down_fps());
+                    0);
   simgear::Particles::setWindVector(windVec * SG_FEET_TO_METER);
-
-  _update_fdm();
+  //simgear::Particles::setWindFrom( _environment->get_wind_from_heading_deg(),
+  //                      _environment->get_wind_speed_kt() );
 }
 
 FGEnvironment
@@ -335,27 +340,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
 {