From a6138b34459aeb422a223508abc958b65c4ad12a Mon Sep 17 00:00:00 2001 From: Torsten Dreyer Date: Fri, 26 Nov 2010 19:24:44 +0100 Subject: [PATCH] Make visibility within cloudlayers settable --- simgear/scene/sky/cloud.cxx | 13 +++++++++++++ simgear/scene/sky/cloud.hxx | 11 +++++++++++ simgear/scene/sky/sky.cxx | 7 +++---- 3 files changed, 27 insertions(+), 4 deletions(-) diff --git a/simgear/scene/sky/cloud.cxx b/simgear/scene/sky/cloud.cxx index 0c5b6e21..aa5e44c0 100644 --- a/simgear/scene/sky/cloud.cxx +++ b/simgear/scene/sky/cloud.cxx @@ -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 { diff --git a/simgear/scene/sky/cloud.hxx b/simgear/scene/sky/cloud.hxx index 9b490fa9..75356450 100644 --- a/simgear/scene/sky/cloud.hxx +++ b/simgear/scene/sky/cloud.hxx @@ -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; diff --git a/simgear/scene/sky/sky.cxx b/simgear/scene/sky/sky.cxx index 4d833f35..ba3311f7 100644 --- a/simgear/scene/sky/sky.cxx +++ b/simgear/scene/sky/sky.cxx @@ -31,6 +31,7 @@ #include #include +#include #include #include @@ -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(cloud_layers[i]->getVisibility_m(), effvis ); } // for -- 2.39.5