]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/environment.cxx
Don't restore initial screen geometry because there is nothing in fg_os* to resize...
[flightgear.git] / src / Environment / environment.cxx
index e6eb0b8a6648d95b4ee87418ec3259f01e1807e1..a1285b80d58ea94610c62d53e204144f10433a5c 100644 (file)
@@ -16,7 +16,7 @@
 //
 // You should have received a copy of the GNU General Public License
 // along with this program; if not, write to the Free Software
-// Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
 //
 // $Id$
 
@@ -36,6 +36,7 @@
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
 #include <simgear/math/interpolater.hxx>
+#include <simgear/environment/visual_enviro.hxx>
 
 #include <Main/fg_props.hxx>
 #include "environment.hxx"
@@ -184,14 +185,14 @@ FGEnvironment::read (const SGPropertyNode * node)
     maybe_copy_value(this, node, "visibility-m",
                      &FGEnvironment::set_visibility_m);
 
-    if (!maybe_copy_value(this, node, "temperature-degc",
+    if (!maybe_copy_value(this, node, "temperature-sea-level-degc",
                           &FGEnvironment::set_temperature_sea_level_degc))
-        maybe_copy_value(this, node, "temperature-sea-level-degc",
+        maybe_copy_value(this, node, "temperature-degc",
                          &FGEnvironment::set_temperature_degc);
 
-    if (!maybe_copy_value(this, node, "dewpoint-degc",
+    if (!maybe_copy_value(this, node, "dewpoint-sea-level-degc",
                           &FGEnvironment::set_dewpoint_sea_level_degc))
-        maybe_copy_value(this, node, "dewpoint-sea-level-degc",
+        maybe_copy_value(this, node, "dewpoint-degc",
                          &FGEnvironment::set_dewpoint_degc);
 
     if (!maybe_copy_value(this, node, "pressure-sea-level-inhg",
@@ -234,6 +235,12 @@ FGEnvironment::get_temperature_degc () const
   return temperature_degc;
 }
 
+double
+FGEnvironment::get_temperature_degf () const
+{
+  return (temperature_degc * 9.0 / 5.0) + 32.0;
+}
+
 double
 FGEnvironment::get_dewpoint_sea_level_degc () const
 {
@@ -297,6 +304,9 @@ FGEnvironment::get_wind_from_down_fps () const
 double
 FGEnvironment::get_turbulence_magnitude_norm () const
 {
+  if( sgEnviro.get_turbulence_enable_state() )
+    if (fgGetBool("/environment/params/real-world-weather-fetch") == true)
+      return sgEnviro.get_cloud_turbulence();
   return turbulence_magnitude_norm;
 }
 
@@ -433,7 +443,7 @@ FGEnvironment::_recalc_hdgspd ()
   double angle_rad;
 
   if (wind_from_east_fps == 0) {
-    angle_rad = (wind_from_north_fps >= 0 ? SGD_PI/2 : -SGD_PI/2);
+    angle_rad = (wind_from_north_fps >= 0 ? SGD_PI_2 : -SGD_PI_2);
   } else {
     angle_rad = atan(wind_from_north_fps/wind_from_east_fps);
   }
@@ -442,12 +452,22 @@ FGEnvironment::_recalc_hdgspd ()
     wind_from_heading_deg = 90 - wind_from_heading_deg;
   else
     wind_from_heading_deg = 270 - wind_from_heading_deg;
+
+#if 0
+  // FIXME: Windspeed can become negative with these formulas.
+  //        which can cause problems for animations that rely
+  //        on the windspeed property.
   if (angle_rad == 0)
     wind_speed_kt = fabs(wind_from_east_fps
                         * SG_METER_TO_NM * SG_FEET_TO_METER * 3600);
   else
     wind_speed_kt = (wind_from_north_fps / sin(angle_rad))
       * SG_METER_TO_NM * SG_FEET_TO_METER * 3600;
+#else
+  wind_speed_kt = sqrt(wind_from_north_fps * wind_from_north_fps +
+                       wind_from_east_fps * wind_from_east_fps) 
+                  * SG_METER_TO_NM * SG_FEET_TO_METER * 3600;
+#endif
 }
 
 void
@@ -576,14 +596,14 @@ interpolate (const FGEnvironment * env1, const FGEnvironment * env2,
                    env2->get_visibility_m(),
                    fraction));
 
-    result->set_temperature_degc
-        (do_interp(env1->get_temperature_degc(),
-                   env2->get_temperature_degc(),
+    result->set_temperature_sea_level_degc
+        (do_interp(env1->get_temperature_sea_level_degc(),
+                   env2->get_temperature_sea_level_degc(),
                    fraction));
 
     result->set_dewpoint_degc
-        (do_interp(env1->get_dewpoint_degc(),
-                   env2->get_dewpoint_degc(),
+        (do_interp(env1->get_dewpoint_sea_level_degc(),
+                   env2->get_dewpoint_sea_level_degc(),
                    fraction));
 
     result->set_pressure_sea_level_inhg