#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 <osg/NodeVisitor>
+#include <osg/Billboard>
#include <simgear/structure/SGReferenced.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/props/props.hxx>
-
-SG_USING_STD(string);
+#include <simgear/math/sg_random.h>
class SGMatModelGroup;
-class SGModelLib;
/**
*
* @return The number of variant models.
*/
- int get_model_count( SGModelLib *modellib,
- const string &fg_root,
- SGPropertyNode *prop_root,
- double sim_time_sec );
-
-
- /**
- * Get a specific variant model for the object.
- *
- * @param index The index of the model.
- * @return The model.
- */
- osg::Node *get_model( int index,
- SGModelLib *modellib,
- const string &fg_root,
- SGPropertyNode *prop_root,
- double sim_time_sec );
+ int get_model_count( SGPropertyNode *prop_root );
/**
*
* @return A randomly select model from the variants.
*/
- osg::Node *get_random_model( SGModelLib *modellib,
- const string &fg_root,
- SGPropertyNode *prop_root,
- double sim_time_sec );
+ osg::Node *get_random_model( SGPropertyNode *prop_root );
/**
*/
double get_coverage_m2 () const;
+ /**
+ * Get the visual range of the object in meters.
+ *
+ * @return The visual range.
+ */
+ double get_range_m () const;
+
+ /**
+ * Get a randomized visual range
+ *
+ * @return a randomized visual range
+ */
+ double get_randomized_range_m(mt* seed) const;
/**
* Get the heading type for the object.
HeadingType get_heading_type () const;
virtual ~SGMatModel ();
+
protected:
* This class uses lazy loading so that models won't be held
* in memory for materials that are never referenced.
*/
- void load_models( SGModelLib *modellib,
- const string &fg_root,
- SGPropertyNode *prop_root,
- double sim_time_sec );
+ 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 _range_m;
private:
double _range_m;
- vector<SGSharedPtr<SGMatModel> > _objects;
+ std::vector<SGSharedPtr<SGMatModel> > _objects;
};
-
#endif // _SG_MAT_MODEL_HXX