00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef TREE_BIN_HXX
00023 #define TREE_BIN_HXX
00024
00025 #include <vector>
00026 #include <string>
00027
00028 #include <osg/Geometry>
00029 #include <osg/Group>
00030 #include <osg/Matrix>
00031
00032 #include <simgear/math/SGMath.hxx>
00033
00034 namespace simgear
00035 {
00036 class TreeBin {
00037 public:
00038 struct Tree {
00039 Tree(const SGVec3f& p) :
00040 position(p)
00041 { }
00042 SGVec3f position;
00043 };
00044
00045 typedef std::vector<Tree> TreeList;
00046
00047 int texture_varieties;
00048 double range;
00049 float height;
00050 float width;
00051 std::string texture;
00052
00053 void insert(const Tree& t)
00054 { _trees.push_back(t); }
00055 void insert(const SGVec3f& p, int t, float s)
00056 { insert(Tree(p)); }
00057
00058 unsigned getNumTrees() const
00059 { return _trees.size(); }
00060 const Tree& getTree(unsigned i) const
00061 { return _trees[i]; }
00062 TreeList _trees;
00063 };
00064
00065 osg::Group* createForest(TreeBin& forest, const osg::Matrix& transform);
00066 }
00067 #endif