]> git.mxchange.org Git - simgear.git/blobdiff - simgear/scene/material/matmodel.hxx
Random buildings - initial commit.
[simgear.git] / simgear / scene / material / matmodel.hxx
index 12ff23dd210d66ee8dff456365db782295808b95..1687302e26bbe3c150c863ebf86855537f6abe94 100644 (file)
@@ -30,7 +30,8 @@
 
 #include <simgear/compiler.h>
 
-#include STL_STRING      // Standard C++ string library
+#include <string>      // Standard C++ string library
+#include <vector>
 
 #include <osg/ref_ptr>
 #include <osg/Node>
@@ -42,8 +43,6 @@
 #include <simgear/props/props.hxx>
 #include <simgear/math/sg_random.h>
 
-SG_USING_STD(string);
-
 
 class SGMatModelGroup;
 
@@ -67,7 +66,8 @@ public:
     enum HeadingType {
         HEADING_FIXED,
         HEADING_BILLBOARD,
-        HEADING_RANDOM
+        HEADING_RANDOM,
+        HEADING_MASK
     };
 
     /**
@@ -78,21 +78,12 @@ public:
     int get_model_count( SGPropertyNode *prop_root );
 
 
-    /**
-     * Get a specific variant model for the object.
-     *
-     * @param index The index of the model.
-     * @return The model.
-     */
-     osg::Node *get_model( int index, SGPropertyNode *prop_root );
-
-
     /**
      * Get a randomly-selected variant model for the object.
      *
      * @return A randomly select model from the variants.
      */
-    osg::Node *get_random_model( SGPropertyNode *prop_root );
+    osg::Node *get_random_model( SGPropertyNode *prop_root, mt *seed );
 
 
     /**
@@ -108,6 +99,15 @@ public:
      * @return The visual range.
      */
     double get_range_m () const;
+
+    /**
+     * Get the minimum spacing between this and any
+     * other objects in m
+     *
+     * @return The spacing in m.
+     */
+    double get_spacing_m () const;
+    
     
     /**
      * Get a randomized visual range
@@ -142,10 +142,11 @@ private:
      */
     void load_models( SGPropertyNode *prop_root );
 
-    vector<string> _paths;
-    mutable vector<osg::ref_ptr<osg::Node> > _models;
+    std::vector<std::string> _paths;
+    mutable std::vector<osg::ref_ptr<osg::Node> > _models;
     mutable bool _models_loaded;
     double _coverage_m2;
+    double _spacing_m;
     double _range_m;
     HeadingType _heading_type;
 };
@@ -199,7 +200,7 @@ protected:
 private:
 
     double _range_m;
-    vector<SGSharedPtr<SGMatModel> > _objects;
+    std::vector<SGSharedPtr<SGMatModel> > _objects;
 };
 
 #endif // _SG_MAT_MODEL_HXX