]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/sky/cloud.hxx
Improved tile cache priority scheme.
[simgear.git] / simgear / scene / sky / cloud.hxx
index 81c9e038b624622ae3fa8a6c61e45cf834197ea1..9b490fa9d3371d2cca234ca248b55b511addbb9b 100644 (file)
@@ -32,8 +32,8 @@
 #include <simgear/math/SGMath.hxx>
 #include <simgear/structure/SGReferenced.hxx>
 
-#include STL_STRING
-SG_USING_STD(string);
+#include <string>
+using std::string;
 
 #include <osg/ref_ptr>
 #include <osg/Array>
@@ -63,6 +63,13 @@ public:
        SG_MAX_CLOUD_COVERAGES
     };
 
+    static const std::string SG_CLOUD_OVERCAST_STRING; // "overcast"
+    static const std::string SG_CLOUD_BROKEN_STRING; // "broken"
+    static const std::string SG_CLOUD_SCATTERED_STRING; // "scattered"
+    static const std::string SG_CLOUD_FEW_STRING; // "few"
+    static const std::string SG_CLOUD_CIRRUS_STRING; // "cirrus"
+    static const std::string SG_CLOUD_CLEAR_STRING; // "clear"
+
     /**
      * Constructor
      * @param tex_path the path to the set of cloud textures
@@ -123,6 +130,18 @@ public:
      */
     void setCoverage (Coverage coverage);
 
+    /** get coverage as string */
+    const string & getCoverageString() const;
+
+    /** get coverage as string */
+    static const string & getCoverageString( Coverage coverage );
+
+    /** get coverage type from string */
+    static Coverage getCoverageType( const std::string & coverage );
+
+    /** set coverage as string */
+    void setCoverageString( const string & coverage );
+
     /**
      * set the cloud movement direction
      * @param dir the cloud movement direction
@@ -162,6 +181,9 @@ public:
     /** build the cloud object */
     void rebuild();
 
+    /** Enable/disable 3D clouds in this layer */
+    void set_enable3dClouds(bool enable);
+
     /**
      * repaint the cloud colors based on the specified fog_color
      * @param fog_color the fog color
@@ -183,16 +205,18 @@ public:
                      double lon, double lat, double alt,
                      double dt = 0.0 );
 
-    osg::Switch* getNode() { return layer_root.get(); }
+    osg::Switch* getNode() { return cloud_root.get(); }
 
     static bool enable_bump_mapping;
 
     /** return the 3D layer cloud associated with this 2D layer */
     SGCloudField *get_layer3D(void) { return layer3D; }
+
 protected:
     void setTextureOffset(const osg::Vec2& offset);
 private:
 
+    osg::ref_ptr<osg::Switch> cloud_root;
     osg::ref_ptr<osg::Switch> layer_root;
     osg::ref_ptr<osg::Group> group_top, group_bottom;
     osg::ref_ptr<osg::MatrixTransform> layer_transform;
@@ -220,11 +244,13 @@ private:
     // from winds, and to simulate the clouds being tied to ground
     // position, not view position
     // double xoff, yoff;
-    double last_lon, last_lat, last_course;
+    SGGeod last_pos;
+    double last_course;
 
     osg::Vec2 base;
 
     SGCloudField *layer3D;
+
 };
 
 #endif // _SG_CLOUD_HXX_