]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/environment_ctrl.cxx
Merge branch 'releng/1.9.1' into maint
[flightgear.git] / src / Environment / environment_ctrl.cxx
index db093b736b0a03e5a0dd6ef028fb6a5059fa48f6..5d4494b051da8a7030c5f5b6e94f9d7599382ee9 100644 (file)
@@ -436,15 +436,19 @@ FGMetarEnvironmentCtrl::update_env_config ()
         // factor by the maximum wind change.
         double x = fabs(current[0] - metar[0]);
         double y = fabs(current[1] - metar[1]);
-        double dx = x / (x + y);
-        double dy = 1 - dx;
 
-        double maxdx = dx * MaxWindChangeKtsSec;
-        double maxdy = dy * MaxWindChangeKtsSec;
+        // only interpolate if we have a difference
+        if (x + y > 0) {
+            double dx = x / (x + y);
+            double dy = 1 - dx;
 
-        // Interpolate each component separately.
-        current[0] = interpolate_val(current[0], metar[0], maxdx);
-        current[1] = interpolate_val(current[1], metar[1], maxdy);
+            double maxdx = dx * MaxWindChangeKtsSec;
+            double maxdy = dy * MaxWindChangeKtsSec;
+
+            // Interpolate each component separately.
+            current[0] = interpolate_val(current[0], metar[0], maxdx);
+            current[1] = interpolate_val(current[1], metar[1], maxdy);
+        }
 
         // Now convert back to polar coordinates.
         if ((current[0] == 0.0) && (current[1] == 0.0)) {
@@ -502,7 +506,6 @@ FGMetarEnvironmentCtrl::update_env_config ()
         double aircraft_alt = fgGetDouble("/position/altitude-ft");
         char s[128];
         int i;
-        bool rebuild_clouds = false;
 
         for (i = 0, layer = layers.begin(); layer != layers_end; ++layer, i++) {
             double currentval;
@@ -518,10 +521,8 @@ FGMetarEnvironmentCtrl::update_env_config ()
             snprintf(s, 128, cl, i);
             strncat(s, "/coverage", 128);
             const char* coverage = (*layer)->getStringValue("coverage", "clear");
-            if (strncmp(fgGetString(s), coverage, 128) != 0) {
+            if (strncmp(fgGetString(s), coverage, 128) != 0)
                 fgSetString(s, coverage);
-                rebuild_clouds = true;
-            }
 
             snprintf(s, 128, cl, i);
             strncat(s, "/elevation-ft", 128);
@@ -569,11 +570,7 @@ FGMetarEnvironmentCtrl::update_env_config ()
                 }
             }
         }
-        
-        if (rebuild_clouds) {
-            // Force an update of the 3D clouds
-            fgSetDouble("/environment/rebuild-layers", 1.0);
-        }
+
     } else {
         // We haven't already loaded a METAR, so apply it immediately.
         dir_from = fgGetDouble("/environment/metar/base-wind-range-from");