]> git.mxchange.org Git - flightgear.git/blobdiff - src/Time/light.hxx
Prepare and implement reinit methods for instruments
[flightgear.git] / src / Time / light.hxx
index f3ecb32e16bf5f8f8c30c23ca2435ca6c36e38f3..dd68c47410e41b4b6deffa9c0ee6b7e5f5192ff7 100644 (file)
@@ -38,6 +38,7 @@
 
 #include <simgear/props/props.hxx>
 #include <simgear/structure/subsystem_mgr.hxx>
+#include <simgear/props/tiedpropertylist.hxx>
 #include <simgear/math/interpolater.hxx>
 
 
@@ -89,6 +90,7 @@ private:
     SGVec4f _scene_chrome;
 
     // clear sky, fog and cloud color
+    SGVec4f _sun_color;
     SGVec4f _sky_color;
     SGVec4f _fog_color;
     SGVec4f _cloud_color;
@@ -97,14 +99,35 @@ private:
     SGVec4f _adj_fog_color;
     SGVec4f _adj_sky_color;
 
+    // input parameters affected by the weather system
+    float _saturation;
+    float _scattering;
+    float _overcast;
+
     double _dt_total;
 
     void update_sky_color ();
     void update_adj_fog_color ();
 
+    void updateSunPos();
+    
     // properties for chrome light; not a tie because I want to fire
     // property listeners when the values change.
     SGPropertyNode_ptr _chromeProps[4];
+  
+    SGPropertyNode_ptr _sunAngleRad;
+
+    simgear::TiedPropertyList _tiedProperties;
+
+    /**
+     * Tied-properties helper, record nodes which are tied for easy un-tie-ing
+     */
+    template <typename T>
+    void tie(SGPropertyNode* aNode, const char* aRelPath, const SGRawValue<T>& aRawValue)
+    {
+        _tiedProperties.Tie(aNode->getNode(aRelPath, true), aRawValue);
+    }
+
 public:
 
     FGLight ();
@@ -129,7 +152,6 @@ public:
     inline const SGVec4f& adj_fog_color () const { return _adj_fog_color; }
     inline const SGVec4f& adj_sky_color () const { return _adj_sky_color; }
 
-
     // Sun related functions
 
     inline double get_sun_angle () const { return _sun_angle; }