00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #ifndef SG_CLIP_GROUP_HXX
00023 #define SG_CLIP_GROUP_HXX
00024
00025 #include <vector>
00026 #include <osg/ref_ptr>
00027 #include <osg/ClipPlane>
00028 #include <osg/Group>
00029 #include <osgUtil/RenderBin>
00030
00031 #include <simgear/math/SGMath.hxx>
00032
00033 class SGClipGroup : public osg::Group {
00034 public:
00035 SGClipGroup();
00036 SGClipGroup(const SGClipGroup&,
00037 const osg::CopyOp& copyop = osg::CopyOp::SHALLOW_COPY);
00038 META_Node(simgear, SGClipGroup);
00039
00040 virtual osg::BoundingSphere computeBound() const;
00041
00042 void addClipPlane(unsigned num, const SGVec2d& p0, const SGVec2d& p1);
00043 void setDrawArea(const SGVec2d& lowerLeft, const SGVec2d& upperRight);
00044 void setDrawArea(const SGVec2d& bottomLeft,
00045 const SGVec2d& topLeft,
00046 const SGVec2d& bottomRight,
00047 const SGVec2d& topRight);
00048
00049 protected:
00050 class CullCallback;
00051 class ClipRenderBin;
00052
00053 std::vector<osg::ref_ptr<osg::ClipPlane> > mClipPlanes;
00054
00055 static osgUtil::RegisterRenderBinProxy clipBinProxy;
00056 };
00057
00058 #endif