#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>
#include <simgear/props/props.hxx>
#include <simgear/math/sg_random.h>
-SG_USING_STD(string);
-
class SGMatModelGroup;
enum HeadingType {
HEADING_FIXED,
HEADING_BILLBOARD,
- HEADING_RANDOM
+ HEADING_RANDOM,
+ HEADING_MASK
};
/**
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 );
/**
* @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
*/
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;
};
private:
double _range_m;
- vector<SGSharedPtr<SGMatModel> > _objects;
+ std::vector<SGSharedPtr<SGMatModel> > _objects;
};
#endif // _SG_MAT_MODEL_HXX