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

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

#include <osg/Billboard>
#include <osg/CameraNode>
#include <osg/Drawable>
#include <osg/Geode>
#include <osg/Group>
#include <osg/LOD>
#include <osg/LineSegment>
#include <osg/Matrix>
#include <osg/Matrixd>
#include <osg/Node>
#include <osg/Projection>
#include <osg/Switch>
#include <osg/Transform>
#include <osg/Vec3>
#include <osg/Viewport>
#include <osgUtil/IntersectVisitor>

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

TYPE_NAME_ALIAS(std::vector< int >, osgUtil::Hit::VecIndexList);

BEGIN_VALUE_REFLECTOR(osgUtil::Hit)
	I_Constructor0();
	I_Constructor1(IN, const osgUtil::Hit &, hit);
	I_Method0(const osg::Vec3 &, getLocalIntersectPoint);
	I_Method0(const osg::Vec3 &, getLocalIntersectNormal);
	I_Method0(const osg::Vec3, getWorldIntersectPoint);
	I_Method0(const osg::Vec3, getWorldIntersectNormal);
	I_Method0(float, getRatio);
	I_Method0(const osg::LineSegment *, getOriginalLineSegment);
	I_Method0(const osg::LineSegment *, getLocalLineSegment);
	I_Method0(osg::NodePath &, getNodePath);
	I_Method0(const osg::NodePath &, getNodePath);
	I_Method0(osg::Geode *, getGeode);
	I_Method0(const osg::Geode *, getGeode);
	I_Method0(osg::Drawable *, getDrawable);
	I_Method0(const osg::Drawable *, getDrawable);
	I_Method0(const osg::RefMatrix *, getMatrix);
	I_Method0(const osg::RefMatrix *, getInverseMatrix);
	I_Method0(const osgUtil::Hit::VecIndexList &, getVecIndexList);
	I_Method0(int, getPrimitiveIndex);
	I_ReadOnlyProperty(osg::Drawable *, Drawable);
	I_ReadOnlyProperty(osg::Geode *, Geode);
	I_ReadOnlyProperty(const osg::RefMatrix *, InverseMatrix);
	I_ReadOnlyProperty(const osg::Vec3 &, LocalIntersectNormal);
	I_ReadOnlyProperty(const osg::Vec3 &, LocalIntersectPoint);
	I_ReadOnlyProperty(const osg::LineSegment *, LocalLineSegment);
	I_ReadOnlyProperty(const osg::RefMatrix *, Matrix);
	I_ReadOnlyProperty(osg::NodePath &, NodePath);
	I_ReadOnlyProperty(const osg::LineSegment *, OriginalLineSegment);
	I_ReadOnlyProperty(int, PrimitiveIndex);
	I_ReadOnlyProperty(float, Ratio);
	I_ReadOnlyProperty(const osgUtil::Hit::VecIndexList &, VecIndexList);
	I_ReadOnlyProperty(const osg::Vec3, WorldIntersectNormal);
	I_ReadOnlyProperty(const osg::Vec3, WorldIntersectPoint);
	I_PublicMemberProperty(float, _ratio);
	I_PublicMemberProperty(osg::ref_ptr< osg::LineSegment >, _originalLineSegment);
	I_PublicMemberProperty(osg::ref_ptr< osg::LineSegment >, _localLineSegment);
	I_PublicMemberProperty(osg::NodePath, _nodePath);
	I_PublicMemberProperty(osg::ref_ptr< osg::Geode >, _geode);
	I_PublicMemberProperty(osg::ref_ptr< osg::Drawable >, _drawable);
	I_PublicMemberProperty(osg::ref_ptr< osg::RefMatrix >, _matrix);
	I_PublicMemberProperty(osg::ref_ptr< osg::RefMatrix >, _inverse);
	I_PublicMemberProperty(osgUtil::Hit::VecIndexList, _vecIndexList);
	I_PublicMemberProperty(int, _primitiveIndex);
	I_PublicMemberProperty(osg::Vec3, _intersectPoint);
	I_PublicMemberProperty(osg::Vec3, _intersectNormal);
END_REFLECTOR

TYPE_NAME_ALIAS(std::vector< osgUtil::Hit >, osgUtil::IntersectVisitor::HitList);

TYPE_NAME_ALIAS(std::map< const osg::LineSegment * COMMA  osgUtil::IntersectVisitor::HitList >, osgUtil::IntersectVisitor::LineSegmentHitListMap);

BEGIN_ENUM_REFLECTOR(osgUtil::IntersectVisitor::LODSelectionMode)
	I_EnumLabel(osgUtil::IntersectVisitor::USE_HIGHEST_LEVEL_OF_DETAIL);
	I_EnumLabel(osgUtil::IntersectVisitor::USE_SEGMENT_START_POINT_AS_EYE_POINT_FOR_LOD_LEVEL_SELECTION);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osgUtil::IntersectVisitor)
	I_BaseType(osg::NodeVisitor);
	I_Constructor0();
	I_Method0(void, reset);
	I_Method1(void, addLineSegment, IN, osg::LineSegment *, seg);
	I_Method1(osgUtil::IntersectVisitor::HitList &, getHitList, IN, const osg::LineSegment *, seg);
	I_Method1(int, getNumHits, IN, const osg::LineSegment *, seg);
	I_Method0(osgUtil::IntersectVisitor::LineSegmentHitListMap &, getSegHitList);
	I_Method0(bool, hits);
	I_Method1(void, setLODSelectionMode, IN, osgUtil::IntersectVisitor::LODSelectionMode, mode);
	I_Method0(osgUtil::IntersectVisitor::LODSelectionMode, getLODSelectionMode);
	I_Method1(void, setEyePoint, IN, const osg::Vec3 &, eye);
	I_Method0(osg::Vec3, getEyePoint);
	I_Method2(float, getDistanceToEyePoint, IN, const osg::Vec3 &, pos, IN, bool, withLODScale);
	I_Method1(void, apply, IN, osg::Node &, x);
	I_Method1(void, apply, IN, osg::Geode &, node);
	I_Method1(void, apply, IN, osg::Billboard &, node);
	I_Method1(void, apply, IN, osg::Group &, node);
	I_Method1(void, apply, IN, osg::Transform &, node);
	I_Method1(void, apply, IN, osg::Switch &, node);
	I_Method1(void, apply, IN, osg::LOD &, node);
	I_ReadOnlyProperty(osg::Vec3, EyePoint);
	I_Property(osgUtil::IntersectVisitor::LODSelectionMode, LODSelectionMode);
	I_ReadOnlyProperty(osgUtil::IntersectVisitor::LineSegmentHitListMap &, SegHitList);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osgUtil::PickVisitor)
	I_BaseType(osgUtil::IntersectVisitor);
	I_Constructor5(IN, const osg::Viewport *, viewport, IN, const osg::Matrixd &, proj, IN, const osg::Matrixd &, view, IN, float, mx, IN, float, my);
	I_Method6(void, runNestedPickVisitor, IN, osg::Node &, node, IN, const osg::Viewport *, viewport, IN, const osg::Matrix &, proj, IN, const osg::Matrix &, view, IN, float, mx, IN, float, my);
	I_Method1(void, apply, IN, osg::Projection &, projection);
	I_Method1(void, apply, IN, osg::CameraNode &, camera);
END_REFLECTOR

STD_MAP_REFLECTOR(std::map< const osg::LineSegment * COMMA  osgUtil::IntersectVisitor::HitList >);

STD_VECTOR_REFLECTOR(std::vector< int >);

STD_VECTOR_REFLECTOR(std::vector< osgUtil::Hit >);

