]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/environment_mgr.cxx
Fix bug 191, uninitialised HUD color.
[flightgear.git] / src / Environment / environment_mgr.cxx
index 3f1c14431125043b7356017ca4ee832388e85566..7b276eb626d49192138617ea357d9758af3d9e3d 100644 (file)
@@ -152,6 +152,11 @@ FGEnvironmentMgr::bind ()
          &FGEnvironmentMgr::get_cloud_layer_coverage_type,
          &FGEnvironmentMgr::set_cloud_layer_coverage_type);
 
+    _tiedProperties.Tie( layerNode->getNode( "visibility-m",true), this, i,
+        &FGEnvironmentMgr::get_cloud_layer_visibility_m,
+        &FGEnvironmentMgr::set_cloud_layer_visibility_m);
+
+
   }
 
   _tiedProperties.setRoot( fgGetNode("/sim/rendering", true ) );
@@ -302,6 +307,9 @@ void
 FGEnvironmentMgr::set_cloud_layer_coverage (int index,
                                             const char * coverage_name)
 {
+  if( thesky->get_cloud_layer(index)->getCoverageString() == coverage_name )
+    return;
+
   thesky->get_cloud_layer(index)->setCoverageString(coverage_name);
   _cloudLayersDirty = true;
 }
@@ -312,14 +320,31 @@ FGEnvironmentMgr::get_cloud_layer_coverage_type (int index) const
   return thesky->get_cloud_layer(index)->getCoverage();
 }
 
+double 
+FGEnvironmentMgr::get_cloud_layer_visibility_m (int index) const
+{
+    return thesky->get_cloud_layer(index)->getVisibility_m();
+}
+
+void 
+FGEnvironmentMgr::set_cloud_layer_visibility_m (int index, double visibility_m)
+{
+    thesky->get_cloud_layer(index)->setVisibility_m(visibility_m);
+}
+
+
 
 void 
 FGEnvironmentMgr::set_cloud_layer_coverage_type (int index, int type )
 {
-  if( index < 0 || index >= SGCloudLayer::SG_MAX_CLOUD_COVERAGES ) {
+  if( type < 0 || type >= SGCloudLayer::SG_MAX_CLOUD_COVERAGES ) {
     SG_LOG(SG_ALL,SG_WARN,"Unknown cloud layer type " << type << " ignored" );
     return;
   }
+
+  if( static_cast<SGCloudLayer::Coverage>(type) == thesky->get_cloud_layer(index)->getCoverage() )
+    return;
+
   thesky->get_cloud_layer(index)->setCoverage(static_cast<SGCloudLayer::Coverage>(type));
   _cloudLayersDirty = true;
 }