]> git.mxchange.org Git - flightgear.git/blobdiff - src/Environment/environment_mgr.cxx
Minor file mode issue.
[flightgear.git] / src / Environment / environment_mgr.cxx
index 3f1c14431125043b7356017ca4ee832388e85566..3182f1159d24f95fe7579eb5077e5ff9e12cda20 100644 (file)
@@ -76,12 +76,8 @@ FGEnvironmentMgr::~FGEnvironmentMgr ()
   remove_subsystem("precipitation");
   delete subsys;
 
-  subsys = get_subsystem("metarfetcher");
-  remove_subsystem("metarfetcher");
-  delete subsys;
-
-  subsys = get_subsystem("metarcontroller");
-  remove_subsystem("metarcontroller");
+  subsys = get_subsystem("realwx");
+  remove_subsystem("realwx");
   delete subsys;
 
   subsys = get_subsystem("controller");
@@ -152,6 +148,13 @@ 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.Tie( layerNode->getNode( "alpha",true), this, i,
+        &FGEnvironmentMgr::get_cloud_layer_maxalpha,
+        &FGEnvironmentMgr::set_cloud_layer_maxalpha);
   }
 
   _tiedProperties.setRoot( fgGetNode("/sim/rendering", true ) );
@@ -302,6 +305,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 +318,41 @@ 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);
+}
+
+double 
+FGEnvironmentMgr::get_cloud_layer_maxalpha (int index ) const
+{
+    return thesky->get_cloud_layer(index)->getMaxAlpha();
+}
+
+void 
+FGEnvironmentMgr::set_cloud_layer_maxalpha (int index, double maxalpha)
+{
+    thesky->get_cloud_layer(index)->setMaxAlpha(maxalpha);
+}
 
 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;
 }