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

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

#include <osg/BoundingBox>
#include <osg/Geometry>
#include <osg/Matrix>
#include <osg/Plane>
#include <osg/Polytope>
#include <osg/Vec3d>
#include <osg/Vec4d>
#include <osgShadow/ConvexPolyhedron>

// 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::vector< osg::Vec3d >, osgShadow::ConvexPolyhedron::Vertices)

TYPE_NAME_ALIAS(std::list< osgShadow::ConvexPolyhedron::Face >, osgShadow::ConvexPolyhedron::Faces)

BEGIN_VALUE_REFLECTOR(osgShadow::ConvexPolyhedron)
	I_DeclaringFile("osgShadow/ConvexPolyhedron");
	I_Constructor0(____ConvexPolyhedron,
	               "",
	               "");
	I_ConstructorWithDefaults3(IN, const osg::Matrix &, matrix, , IN, const osg::Matrix &, inverse, , IN, const osg::BoundingBox &, bb, osg::BoundingBox(-1,-1,-1, 1, 1, 1),
	                           ____ConvexPolyhedron__C5_osg_Matrix_R1__C5_osg_Matrix_R1__C5_osg_BoundingBox_R1,
	                           "",
	                           "");
	I_Method0(osgShadow::ConvexPolyhedron::Face &, createFace,
	          Properties::NON_VIRTUAL,
	          __Face_R1__createFace,
	          "",
	          "");
	I_Method0(void, clear,
	          Properties::NON_VIRTUAL,
	          __void__clear,
	          "",
	          "");
	I_MethodWithDefaults2(void, setToUnitFrustum, IN, bool, withNear, true, IN, bool, withFar, true,
	                      Properties::NON_VIRTUAL,
	                      __void__setToUnitFrustum__bool__bool,
	                      "",
	                      "");
	I_Method1(void, setToBoundingBox, IN, const osg::BoundingBox &, bb,
	          Properties::NON_VIRTUAL,
	          __void__setToBoundingBox__C5_osg_BoundingBox_R1,
	          "",
	          "");
	I_Method2(void, transform, IN, const osg::Matrix &, matrix, IN, const osg::Matrix &, inverse,
	          Properties::NON_VIRTUAL,
	          __void__transform__C5_osg_Matrix_R1__C5_osg_Matrix_R1,
	          "",
	          "");
	I_Method2(void, transformClip, IN, const osg::Matrix &, matrix, IN, const osg::Matrix &, inverse,
	          Properties::NON_VIRTUAL,
	          __void__transformClip__C5_osg_Matrix_R1__C5_osg_Matrix_R1,
	          "",
	          "");
	I_Method3(bool, mergeFaces, IN, const osgShadow::ConvexPolyhedron::Face &, face0, IN, const osgShadow::ConvexPolyhedron::Face &, face1, IN, osgShadow::ConvexPolyhedron::Face &, face,
	          Properties::NON_VIRTUAL,
	          __bool__mergeFaces__C5_Face_R1__C5_Face_R1__Face_R1,
	          "",
	          "");
	I_MethodWithDefaults2(void, mergeCoplanarFaces, IN, const double &, plane_normal_dot_tolerance, 0.0, IN, const double &, plane_distance_tolerance, 0.0,
	                      Properties::NON_VIRTUAL,
	                      __void__mergeCoplanarFaces__C5_double_R1__C5_double_R1,
	                      "",
	                      "");
	I_Method0(void, removeDuplicateVertices,
	          Properties::NON_VIRTUAL,
	          __void__removeDuplicateVertices,
	          "",
	          "");
	I_MethodWithDefaults2(bool, checkCoherency, IN, bool, checkForNonConvexPolys, false, IN, const char *, errorPrefix, NULL,
	                      Properties::NON_VIRTUAL,
	                      __bool__checkCoherency__bool__C5_char_P1,
	                      "",
	                      "");
	I_Method1(void, cut, IN, const osg::Polytope &, polytope,
	          Properties::NON_VIRTUAL,
	          __void__cut__C5_osg_Polytope_R1,
	          "",
	          "");
	I_Method1(void, cut, IN, const osgShadow::ConvexPolyhedron &, polytope,
	          Properties::NON_VIRTUAL,
	          __void__cut__C5_ConvexPolyhedron_R1,
	          "",
	          "");
	I_MethodWithDefaults2(void, cut, IN, const osg::Plane &, plane, , IN, const std::string &, name, std::string(),
	                      Properties::NON_VIRTUAL,
	                      __void__cut__C5_osg_Plane_R1__C5_std_string_R1,
	                      "",
	                      "");
	I_Method1(void, extrude, IN, const osg::Vec3d &, offset,
	          Properties::NON_VIRTUAL,
	          __void__extrude__C5_osg_Vec3d_R1,
	          "",
	          "");
	I_Method1(void, translate, IN, const osg::Vec3d &, offset,
	          Properties::NON_VIRTUAL,
	          __void__translate__C5_osg_Vec3d_R1,
	          "",
	          "");
	I_Method1(void, getPolytope, IN, osg::Polytope &, polytope,
	          Properties::NON_VIRTUAL,
	          __void__getPolytope__osg_Polytope_R1,
	          "",
	          "");
	I_Method1(void, getPoints, IN, osgShadow::ConvexPolyhedron::Vertices &, vertices,
	          Properties::NON_VIRTUAL,
	          __void__getPoints__Vertices_R1,
	          "",
	          "");
	I_MethodWithDefaults1(osg::BoundingBox, computeBoundingBox, IN, const osg::Matrix &, m, osgShadow::ConvexPolyhedron::defaultMatrix,
	                      Properties::NON_VIRTUAL,
	                      __osg_BoundingBox__computeBoundingBox__C5_osg_Matrix_R1,
	                      "",
	                      "");
	I_MethodWithDefaults3(osg::Geometry *, buildGeometry, IN, const osg::Vec4d &, colorOutline, , IN, const osg::Vec4d &, colorInside, , IN, osg::Geometry *, useGeometry, NULL,
	                      Properties::NON_VIRTUAL,
	                      __osg_Geometry_P1__buildGeometry__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__osg_Geometry_P1,
	                      "",
	                      "");
	I_MethodWithDefaults12(bool, dumpGeometry, IN, const osgShadow::ConvexPolyhedron::Face *, face, NULL, IN, const osg::Plane *, plane, NULL, IN, osgShadow::ConvexPolyhedron *, basehull, NULL, IN, const char *, filename, "convexpolyhedron.osg", IN, const osg::Vec4d &, colorOutline, osg::Vec4(0, 1, 0, 0.5), IN, const osg::Vec4d &, colorInside, osg::Vec4(0, 1, 0, 0.25), IN, const osg::Vec4d &, faceColorOutline, osg::Vec4(0, 0, 1, 0.5), IN, const osg::Vec4d &, faceColorInside, osg::Vec4(0, 0, 1, 0.25), IN, const osg::Vec4d &, planeColorOutline, osg::Vec4(1, 0, 0, 0.5), IN, const osg::Vec4d &, planeColorInside, osg::Vec4(1, 0, 0, 0.25), IN, const osg::Vec4d &, baseColorOutline, osg::Vec4(0, 0, 0, 0.5), IN, const osg::Vec4d &, baseColorInside, osg::Vec4(0, 0, 0, 0.25),
	                       Properties::NON_VIRTUAL,
	                       __bool__dumpGeometry__C5_Face_P1__C5_osg_Plane_P1__ConvexPolyhedron_P1__C5_char_P1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1__C5_osg_Vec4d_R1,
	                       "",
	                       "");
	I_StaticMethodWithDefaults5(int, pointsColinear, IN, const osg::Vec3d &, va, , IN, const osg::Vec3d &, vb, , IN, const osg::Vec3d &, vc, , IN, const double &, edge_normal_dot_tolerance, 0.0, IN, const double &, null_edge_length_tolerance, 0.0,
	                            __int__pointsColinear__C5_osg_Vec3d_R1__C5_osg_Vec3d_R1__C5_osg_Vec3d_R1__C5_double_R1__C5_double_R1_S,
	                            "",
	                            "");
	I_StaticMethodWithDefaults2(int, isFacePolygonConvex, IN, osgShadow::ConvexPolyhedron::Face &, face, , IN, bool, ignoreCollinearVertices, true,
	                            __int__isFacePolygonConvex__Face_R1__bool_S,
	                            "",
	                            "");
	I_SimpleProperty(const osg::BoundingBox &, ToBoundingBox, 
	                 0, 
	                 __void__setToBoundingBox__C5_osg_BoundingBox_R1);
	I_PublicMemberProperty(osgShadow::ConvexPolyhedron::Faces, _faces);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgShadow::ConvexPolyhedron::Face)
	I_DeclaringFile("osgShadow/ConvexPolyhedron");
	I_Constructor0(____Face,
	               "",
	               "");
	I_PublicMemberProperty(std::string, name);
	I_PublicMemberProperty(osg::Plane, plane);
	I_PublicMemberProperty(osgShadow::ConvexPolyhedron::Vertices, vertices);
END_REFLECTOR

STD_LIST_REFLECTOR(std::list< osgShadow::ConvexPolyhedron::Face >)

