diff --git a/src/Environment/precipitation_mgr.cxx b/src/Environment/precipitation_mgr.cxx index 7d97674a1..29d64cde0 100644 --- a/src/Environment/precipitation_mgr.cxx +++ b/src/Environment/precipitation_mgr.cxx @@ -44,7 +44,6 @@ #include "precipitation_mgr.hxx" - extern SGSky *thesky; @@ -63,7 +62,6 @@ FGPrecipitationMgr::FGPrecipitationMgr() // By default, no precipitation precipitation->setRainIntensity(0); precipitation->setSnowIntensity(0); - transform->addChild(precipitation->build()); group->addChild(transform.get()); } @@ -92,6 +90,12 @@ void FGPrecipitationMgr::init() // Add to scene graph osg::Group* scenery = globals->get_scenery()->get_scene_graph(); scenery->addChild(getObject()); + fgGetNode("environment/params/precipitation-level-ft", true); +} + +void FGPrecipitationMgr::setPrecipitationLevel(double a) +{ + fgSetDouble("environment/params/precipitation-level-ft",a); } /** @@ -104,7 +108,6 @@ osg::Group * FGPrecipitationMgr::getObject(void) return this->group.get(); } - /** * @brief Calculate the max alitutude with precipitation * @@ -199,6 +202,9 @@ void FGPrecipitationMgr::update(double dt) float altitudeAircraft; float altitudeCloudLayer; + altitudeCloudLayer = this->getPrecipitationAtAltitudeMax() * SG_METER_TO_FEET; + setPrecipitationLevel(altitudeCloudLayer); + // Does the user enable the precipitation ? if (!sgEnviro.get_precipitation_enable_state()) { // Disable precipitations @@ -214,7 +220,6 @@ void FGPrecipitationMgr::update(double dt) // Get the elevation of aicraft and of the cloud layer altitudeAircraft = fgGetDouble("/position/altitude-ft", 0.0); - altitudeCloudLayer = this->getPrecipitationAtAltitudeMax() * SG_METER_TO_FEET; if ((altitudeCloudLayer > 0) && (altitudeAircraft > altitudeCloudLayer)) { // The aircraft is above the cloud layer diff --git a/src/Environment/precipitation_mgr.hxx b/src/Environment/precipitation_mgr.hxx index 6f2ab8dd7..69a0ecfaa 100644 --- a/src/Environment/precipitation_mgr.hxx +++ b/src/Environment/precipitation_mgr.hxx @@ -32,6 +32,7 @@ #include #include + class FGPrecipitationMgr : public SGSubsystem { private: @@ -40,7 +41,6 @@ private: osg::ref_ptr precipitation; float getPrecipitationAtAltitudeMax(void); - public: FGPrecipitationMgr(); virtual ~FGPrecipitationMgr(); @@ -49,7 +49,10 @@ public: virtual void init (); virtual void update (double dt); + void setPrecipitationLevel(double l); + osg::Group * getObject(void); + }; #endif