// ***************************************************************************
//
//   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/Vec3>
#include <osg/Vec3d>
#include <osgUtil/IntersectionVisitor>
#include <osgUtil/LineSegmentIntersector>

// 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::multiset< osgUtil::LineSegmentIntersector::Intersection >, osgUtil::LineSegmentIntersector::Intersections)

BEGIN_OBJECT_REFLECTOR(osgUtil::LineSegmentIntersector)
	I_DeclaringFile("osgUtil/LineSegmentIntersector");
	I_BaseType(osgUtil::Intersector);
	I_Constructor2(IN, const osg::Vec3d &, start, IN, const osg::Vec3d &, end,
	               ____LineSegmentIntersector__C5_osg_Vec3d_R1__C5_osg_Vec3d_R1,
	               "Construct a LineSegmentIntersector the runs between the specified start and end points in MODEL coordinates. ",
	               "");
	I_Constructor3(IN, osgUtil::Intersector::CoordinateFrame, cf, IN, const osg::Vec3d &, start, IN, const osg::Vec3d &, end,
	               ____LineSegmentIntersector__CoordinateFrame__C5_osg_Vec3d_R1__C5_osg_Vec3d_R1,
	               "Construct a LineSegmentIntersector the runs between the specified start and end points in the specified coordinate frame. ",
	               "");
	I_Constructor3(IN, osgUtil::Intersector::CoordinateFrame, cf, IN, double, x, IN, double, y,
	               ____LineSegmentIntersector__CoordinateFrame__double__double,
	               "Convenience constructor for supporting picking in WINDOW, or PROJECTION coordinates In WINDOW coordinates creates a start value of (x,y,0) and end value of (x,y,1). ",
	               "In PROJECTION coordinates (clip space cube) creates a start value of (x,y,-1) and end value of (x,y,1). In VIEW and MODEL coordinates creates a start value of (x,y,0) and end value of (x,y,1). ");
	I_Method1(void, insertIntersection, IN, const osgUtil::LineSegmentIntersector::Intersection &, intersection,
	          Properties::NON_VIRTUAL,
	          __void__insertIntersection__C5_Intersection_R1,
	          "",
	          "");
	I_Method0(osgUtil::LineSegmentIntersector::Intersections &, getIntersections,
	          Properties::NON_VIRTUAL,
	          __Intersections_R1__getIntersections,
	          "",
	          "");
	I_Method0(osgUtil::LineSegmentIntersector::Intersection, getFirstIntersection,
	          Properties::NON_VIRTUAL,
	          __Intersection__getFirstIntersection,
	          "",
	          "");
	I_Method1(void, setStart, IN, const osg::Vec3d &, start,
	          Properties::NON_VIRTUAL,
	          __void__setStart__C5_osg_Vec3d_R1,
	          "",
	          "");
	I_Method0(const osg::Vec3d &, getStart,
	          Properties::NON_VIRTUAL,
	          __C5_osg_Vec3d_R1__getStart,
	          "",
	          "");
	I_Method1(void, setEnd, IN, const osg::Vec3d &, end,
	          Properties::NON_VIRTUAL,
	          __void__setEnd__C5_osg_Vec3d_R1,
	          "",
	          "");
	I_Method0(const osg::Vec3d &, getEnd,
	          Properties::NON_VIRTUAL,
	          __C5_osg_Vec3d_R1__getEnd,
	          "",
	          "");
	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_ProtectedMethod1(bool, intersects, IN, const osg::BoundingSphere &, bs,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __bool__intersects__C5_osg_BoundingSphere_R1,
	                   "",
	                   "");
	I_ProtectedMethod3(bool, intersectAndClip, IN, osg::Vec3d &, s, IN, osg::Vec3d &, e, IN, const osg::BoundingBox &, bb,
	                   Properties::NON_VIRTUAL,
	                   Properties::NON_CONST,
	                   __bool__intersectAndClip__osg_Vec3d_R1__osg_Vec3d_R1__C5_osg_BoundingBox_R1,
	                   "",
	                   "");
	I_SimpleProperty(const osg::Vec3d &, End, 
	                 __C5_osg_Vec3d_R1__getEnd, 
	                 __void__setEnd__C5_osg_Vec3d_R1);
	I_SimpleProperty(osgUtil::LineSegmentIntersector::Intersection, FirstIntersection, 
	                 __Intersection__getFirstIntersection, 
	                 0);
	I_SimpleProperty(osgUtil::LineSegmentIntersector::Intersections &, Intersections, 
	                 __Intersections_R1__getIntersections, 
	                 0);
	I_SimpleProperty(const osg::Vec3d &, Start, 
	                 __C5_osg_Vec3d_R1__getStart, 
	                 __void__setStart__C5_osg_Vec3d_R1);
END_REFLECTOR

TYPE_NAME_ALIAS(std::vector< unsigned int >, osgUtil::LineSegmentIntersector::Intersection::IndexList)

TYPE_NAME_ALIAS(std::vector< double >, osgUtil::LineSegmentIntersector::Intersection::RatioList)

BEGIN_VALUE_REFLECTOR(osgUtil::LineSegmentIntersector::Intersection)
	I_DeclaringFile("osgUtil/LineSegmentIntersector");
	I_Constructor0(____Intersection,
	               "",
	               "");
	I_Method0(const osg::Vec3d &, getLocalIntersectPoint,
	          Properties::NON_VIRTUAL,
	          __C5_osg_Vec3d_R1__getLocalIntersectPoint,
	          "",
	          "");
	I_Method0(osg::Vec3d, getWorldIntersectPoint,
	          Properties::NON_VIRTUAL,
	          __osg_Vec3d__getWorldIntersectPoint,
	          "",
	          "");
	I_Method0(const osg::Vec3 &, getLocalIntersectNormal,
	          Properties::NON_VIRTUAL,
	          __C5_osg_Vec3_R1__getLocalIntersectNormal,
	          "",
	          "");
	I_Method0(osg::Vec3, getWorldIntersectNormal,
	          Properties::NON_VIRTUAL,
	          __osg_Vec3__getWorldIntersectNormal,
	          "",
	          "");
	I_SimpleProperty(const osg::Vec3 &, LocalIntersectNormal, 
	                 __C5_osg_Vec3_R1__getLocalIntersectNormal, 
	                 0);
	I_SimpleProperty(const osg::Vec3d &, LocalIntersectPoint, 
	                 __C5_osg_Vec3d_R1__getLocalIntersectPoint, 
	                 0);
	I_SimpleProperty(osg::Vec3, WorldIntersectNormal, 
	                 __osg_Vec3__getWorldIntersectNormal, 
	                 0);
	I_SimpleProperty(osg::Vec3d, WorldIntersectPoint, 
	                 __osg_Vec3d__getWorldIntersectPoint, 
	                 0);
	I_PublicMemberProperty(double, ratio);
	I_PublicMemberProperty(osg::NodePath, nodePath);
	I_PublicMemberProperty(osg::ref_ptr< osg::Drawable >, drawable);
	I_PublicMemberProperty(osg::ref_ptr< osg::RefMatrix >, matrix);
	I_PublicMemberProperty(osg::Vec3d, localIntersectionPoint);
	I_PublicMemberProperty(osg::Vec3, localIntersectionNormal);
	I_PublicMemberProperty(osgUtil::LineSegmentIntersector::Intersection::IndexList, indexList);
	I_PublicMemberProperty(osgUtil::LineSegmentIntersector::Intersection::RatioList, ratioList);
	I_PublicMemberProperty(unsigned int, primitiveIndex);
END_REFLECTOR

STD_SET_REFLECTOR(std::multiset< osgUtil::LineSegmentIntersector::Intersection >)

