]> git.mxchange.org Git - flightgear.git/commitdiff
Expose precipitation property
authortimoore <timoore>
Tue, 25 Nov 2008 22:50:04 +0000 (22:50 +0000)
committertimoore <timoore>
Tue, 25 Nov 2008 22:50:04 +0000 (22:50 +0000)
from Vivian Meazza

src/Environment/precipitation_mgr.cxx
src/Environment/precipitation_mgr.hxx

index 7d97674a14c9c104f0d9860892ed7281d5a85458..29d64cde06c5cfb3adcc37278130b075856b6c89 100644 (file)
@@ -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
index 6f2ab8dd782d4d94e18bebee532158c76361e9b4..69a0ecfaa223d237379229cdf79b13473c6dfabe 100644 (file)
@@ -32,6 +32,7 @@
 #include <simgear/structure/subsystem_mgr.hxx>
 #include <simgear/environment/precipitation.hxx>
 
+
 class FGPrecipitationMgr : public SGSubsystem
 {
 private:
@@ -40,7 +41,6 @@ private:
     osg::ref_ptr<SGPrecipitation> 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