]> git.mxchange.org Git - simgear.git/commitdiff
Make visibility within cloudlayers settable
authorTorsten Dreyer <Torsten@t3r.de>
Fri, 26 Nov 2010 18:24:44 +0000 (19:24 +0100)
committerTorsten Dreyer <Torsten@t3r.de>
Fri, 26 Nov 2010 18:24:44 +0000 (19:24 +0100)
simgear/scene/sky/cloud.cxx
simgear/scene/sky/cloud.hxx
simgear/scene/sky/sky.cxx

index 0c5b6e21acf7d8f3f03267660df7b2deca8a5297..aa5e44c0ac8abd6304dc1a03dee16c4873211e88 100644 (file)
@@ -148,6 +148,7 @@ SGCloudLayer::SGCloudLayer( const string &tex_path ) :
     layer_asl(0.0),
     layer_thickness(0.0),
     layer_transition(0.0),
+    layer_visibility(25.0),
     layer_coverage(SG_CLOUD_CLEAR),
     scale(4000.0),
     speed(0.0),
@@ -260,6 +261,18 @@ SGCloudLayer::setThickness_m (float thickness_m)
     layer_thickness = thickness_m;
 }
 
+float
+SGCloudLayer::getVisibility_m() const
+{
+    return layer_visibility;
+}
+
+void
+SGCloudLayer::setVisibility_m (float visibility_m)
+{
+    layer_visibility = visibility_m;
+}
+
 float
 SGCloudLayer::getTransition_m () const
 {
index 9b490fa9d3371d2cca234ca248b55b511addbb9b..75356450efdc39fb14063396ab278284f8c2017f 100644 (file)
@@ -108,6 +108,16 @@ public:
      */
     void setThickness_m (float thickness_m);
 
+    /** get the layer visibility */
+    float getVisibility_m() const;
+    /**
+     * set the layer visibility 
+     * @param visibility_m the layer minimum visibility in meters.
+     */
+    void setVisibility_m(float visibility_m);
+
+
+
     /**
      * get the transition/boundary layer depth in meters.  This
      * allows gradual entry/exit from the cloud layer via adjusting
@@ -235,6 +245,7 @@ private:
     float layer_asl;
     float layer_thickness;
     float layer_transition;
+    float layer_visibility;
     Coverage layer_coverage;
     float scale;
     float speed;
index 4d833f35d7b9faefc7037d0b099ac274a20b433a..ba3311f7ebe3d3f78bdcfde5d02a3ec729787f1e 100644 (file)
@@ -31,6 +31,7 @@
 
 #include <simgear/math/sg_random.h>
 #include <simgear/scene/util/RenderConstants.hxx>
+#include <sg_inlines.h>
 
 #include <osg/StateSet>
 #include <osg/Depth>
@@ -359,10 +360,8 @@ void SGSky::modify_vis( float alt, float time_factor ) {
        }
 #endif
 
-        // never let visibility drop below 25 meters
-        if ( effvis <= 25.0 ) {
-            effvis = 25.0;
-        }
+        // never let visibility drop below the layer's configured visibility
+       effvis = SG_MAX2<float>(cloud_layers[i]->getVisibility_m(), effvis );
 
     } // for