// ***************************************************************************
//
//   Generated automatically by genwrapper.
//   Please DO NOT EDIT this file!
//
// ***************************************************************************

#include <osgIntrospection/ReflectionMacros>
#include <osgIntrospection/TypedMethodInfo>
#include <osgIntrospection/StaticMethodInfo>
#include <osgIntrospection/Attributes>

#include <osg/Drawable>
#include <osg/Node>
#include <osg/Plane>
#include <osg/Polytope>
#include <osgUtil/IntersectionVisitor>
#include <osgUtil/PolytopeIntersector>

// Must undefine IN and OUT macros defined in Windows headers
#ifdef IN
#undef IN
#endif
#ifdef OUT
#undef OUT
#endif

#include <osg/observer_ptr>
        
TYPE_NAME_ALIAS(std::set< osgUtil::PolytopeIntersector::Intersection >, osgUtil::PolytopeIntersector::Intersections)

BEGIN_OBJECT_REFLECTOR(osgUtil::PolytopeIntersector)
	I_DeclaringFile("osgUtil/PolytopeIntersector");
	I_BaseType(osgUtil::Intersector);
	I_Constructor1(IN, const osg::Polytope &, polytope,
	               Properties::NON_EXPLICIT,
	               ____PolytopeIntersector__C5_osg_Polytope_R1,
	               "Construct a PolytopeIntersector using specified polytope in MODEL coordinates. ",
	               "");
	I_Constructor2(IN, osgUtil::Intersector::CoordinateFrame, cf, IN, const osg::Polytope &, polytope,
	               ____PolytopeIntersector__CoordinateFrame__C5_osg_Polytope_R1,
	               "Construct a PolytopeIntersector using specified polytope in specified coordinate frame. ",
	               "");
	I_Constructor5(IN, osgUtil::Intersector::CoordinateFrame, cf, IN, double, xMin, IN, double, yMin, IN, double, xMax, IN, double, yMax,
	               ____PolytopeIntersector__CoordinateFrame__double__double__double__double,
	               "Convenience constructor for supporting picking in WINDOW, or PROJECTION coordinates In WINDOW coordinates (clip space cube) creates a five sided polytope box that has a front face at 0.0 and sides around box xMin, yMin, xMax, yMax. ",
	               "In PROJECTION coordinates (clip space cube) creates a five sided polytope box that has a front face at -1 and sides around box xMin, yMin, xMax, yMax. In VIEW and MODEL coordinates (clip space cube) creates a five sided polytope box that has a front face at 0.0 and sides around box xMin, yMin, xMax, yMax. ");
	I_Method1(void, insertIntersection, IN, const osgUtil::PolytopeIntersector::Intersection &, intersection,
	          Properties::NON_VIRTUAL,
	          __void__insertIntersection__C5_Intersection_R1,
	          "",
	          "");
	I_Method0(osgUtil::PolytopeIntersector::Intersections &, getIntersections,
	          Properties::NON_VIRTUAL,
	          __Intersections_R1__getIntersections,
	          "",
	          "");
	I_Method0(osgUtil::PolytopeIntersector::Intersection, getFirstIntersection,
	          Properties::NON_VIRTUAL,
	          __Intersection__getFirstIntersection,
	          "",
	          "");
	I_Method0(unsigned int, getDimensionMask,
	          Properties::NON_VIRTUAL,
	          __unsigned_int__getDimensionMask,
	          "",
	          "");
	I_Method1(void, setDimensionMask, IN, unsigned int, dimensionMask,
	          Properties::NON_VIRTUAL,
	          __void__setDimensionMask__unsigned_int,
	          "set the dimension mask. ",
	          "As polytope-triangle and polytope-quad intersections are expensive to compute it is possible to turn them off by calling setDimensionMask( DimZero | DimOne ) ");
	I_Method0(const osg::Plane &, getReferencePlane,
	          Properties::NON_VIRTUAL,
	          __C5_osg_Plane_R1__getReferencePlane,
	          "",
	          "");
	I_Method1(void, setReferencePlane, IN, const osg::Plane &, plane,
	          Properties::NON_VIRTUAL,
	          __void__setReferencePlane__C5_osg_Plane_R1,
	          "set the plane used to sort the intersections. ",
	          "The intersections are sorted by the distance of the localIntersectionPoint and the reference plane. The default for the reference plane is the last plane of the polytope. ");
	I_Method1(osgUtil::Intersector *, clone, IN, osgUtil::IntersectionVisitor &, iv,
	          Properties::VIRTUAL,
	          __Intersector_P1__clone__osgUtil_IntersectionVisitor_R1,
	          "",
	          "");
	I_Method1(bool, enter, IN, const osg::Node &, node,
	          Properties::VIRTUAL,
	          __bool__enter__C5_osg_Node_R1,
	          "",
	          "");
	I_Method0(void, leave,
	          Properties::VIRTUAL,
	          __void__leave,
	          "",
	          "");
	I_Method2(void, intersect, IN, osgUtil::IntersectionVisitor &, iv, IN, osg::Drawable *, drawable,
	          Properties::VIRTUAL,
	          __void__intersect__osgUtil_IntersectionVisitor_R1__osg_Drawable_P1,
	          "",
	          "");
	I_Method0(void, reset,
	          Properties::VIRTUAL,
	          __void__reset,
	          "",
	          "");
	I_Method0(bool, containsIntersections,
	          Properties::VIRTUAL,
	          __bool__containsIntersections,
	          "",
	          "");
	I_SimpleProperty(unsigned int, DimensionMask, 
	                 __unsigned_int__getDimensionMask, 
	                 __void__setDimensionMask__unsigned_int);
	I_SimpleProperty(osgUtil::PolytopeIntersector::Intersection, FirstIntersection, 
	                 __Intersection__getFirstIntersection, 
	                 0);
	I_SimpleProperty(osgUtil::PolytopeIntersector::Intersections &, Intersections, 
	                 __Intersections_R1__getIntersections, 
	                 0);
	I_SimpleProperty(const osg::Plane &, ReferencePlane, 
	                 __C5_osg_Plane_R1__getReferencePlane, 
	                 __void__setReferencePlane__C5_osg_Plane_R1);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgUtil::PolytopeIntersector::Intersection)
	I_DeclaringFile("osgUtil/PolytopeIntersector");
	I_Constructor0(____Intersection,
	               "",
	               "");
	I_PublicMemberProperty(double, distance);
	I_PublicMemberProperty(double, maxDistance);
	I_PublicMemberProperty(osg::NodePath, nodePath);
	I_PublicMemberProperty(osg::ref_ptr< osg::Drawable >, drawable);
	I_PublicMemberProperty(osg::ref_ptr< osg::RefMatrix >, matrix);
	I_PublicMemberProperty(osg::Vec3, localIntersectionPoint);
	I_PublicMemberProperty(unsigned int, numIntersectionPoints);
	I_PublicMemberProperty(unsigned int, primitiveIndex);
END_REFLECTOR

STD_SET_REFLECTOR(std::set< osgUtil::PolytopeIntersector::Intersection >)

