#include <vector>
+#include <osg/Array>
#include <osg/BoundingBox>
#include <osg/CopyOp>
#include <osg/Drawable>
#include <osg/Vec3>
#include <osg/Vec4>
-#include "TreeBin.hxx"
-
namespace simgear
{
class ShaderGeometry : public osg::Drawable
{
public:
- ShaderGeometry()
- {
- setUseDisplayList(false);
+ ShaderGeometry() :
+ varieties(1)
+ {
+ setSupportsDisplayList(false);
}
ShaderGeometry(int v) :
varieties(v)
- {
- setUseDisplayList(false);
+ {
+ setSupportsDisplayList(false);
}
/** Copy constructor using CopyOp to manage deep vs shallow copy.*/
osg::Drawable(ShaderGeometry,copyop) {}
META_Object(flightgear, ShaderGeometry);
-
- typedef std::vector<osg::Vec4> PositionSizeList;
-
+
virtual void drawImplementation(osg::RenderInfo& renderInfo) const;
virtual osg::BoundingBox computeBound() const;
-
- void setGeometry(osg::Drawable* geometry)
+ void setGeometry(osg::Geometry* geometry)
{
_geometry = geometry;
}
- void addTree(TreeBin::Tree tree)
- {
- _trees.push_back(tree);
- }
-
- osg::ref_ptr<osg::Drawable> _geometry;
+ void addObject(const osg::Vec3& position, float scale, int texture_index);
+
+ osg::ref_ptr<osg::Geometry> _geometry;
- TreeBin::TreeList _trees;
int varieties;
+ osg::ref_ptr<osg::Vec4Array> _posScaleArray;
+ osg::ref_ptr<osg::FloatArray> _vertexAttribArray;
protected:
virtual ~ShaderGeometry() {}
-
};
}