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

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

#include <osgCal/CoreModel>
#include <osgCal/IOUtils>

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

BEGIN_ENUM_REFLECTOR(osgCal::CoreModel::BufferIndex)
	I_EnumLabel(osgCal::CoreModel::BI_VERTEX);
	I_EnumLabel(osgCal::CoreModel::BI_WEIGHT);
	I_EnumLabel(osgCal::CoreModel::BI_NORMAL);
	I_EnumLabel(osgCal::CoreModel::BI_MATRIX_INDEX);
	I_EnumLabel(osgCal::CoreModel::BI_TEX_COORD);
	I_EnumLabel(osgCal::CoreModel::BI_INDEX);
	I_EnumLabel(osgCal::CoreModel::BI_TANGENT);
	I_EnumLabel(osgCal::CoreModel::BI_BINORMAL);
	I_EnumLabel(osgCal::CoreModel::BI_TOTAL_COUNT);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osgCal::CoreModel)
	I_Constructor0();
	I_Method1(void, load, IN, const std::string &, cfgFileName);
	I_Method0(CalCoreModel *, getCalCoreModel);
	I_Method0(CalHardwareModel *, getCalHardwareModel);
	I_Method1(osg::BufferObject *, getVbo, IN, int, index);
	I_Method0(float, getScale);
	I_Method0(const std::vector< osgCal::CoreModel::Mesh > &, getMeshes);
	I_Method0(const std::vector< std::string > &, getAnimationNames);
	I_Method0(const osgCal::VertexBuffer *, getVertexBuffer);
	I_Method0(const osgCal::WeightBuffer *, getWeightBuffer);
	I_Method0(const osgCal::MatrixIndexBuffer *, getMatrixIndexBuffer);
	I_Method0(const osgCal::IndexBuffer *, getIndexBuffer);
	I_Method0(const osgCal::NormalBuffer *, getNormalBuffer);
	I_Method0(const osgCal::TexCoordBuffer *, getTexCoordBuffer);
	I_ReadOnlyProperty(const std::vector< std::string > &, AnimationNames);
	I_ReadOnlyProperty(CalCoreModel *, CalCoreModel);
	I_ReadOnlyProperty(CalHardwareModel *, CalHardwareModel);
	I_ReadOnlyProperty(const osgCal::IndexBuffer *, IndexBuffer);
	I_ReadOnlyProperty(const osgCal::MatrixIndexBuffer *, MatrixIndexBuffer);
	I_ReadOnlyProperty(const std::vector< osgCal::CoreModel::Mesh > &, Meshes);
	I_ReadOnlyProperty(const osgCal::NormalBuffer *, NormalBuffer);
	I_ReadOnlyProperty(float, Scale);
	I_ReadOnlyProperty(const osgCal::TexCoordBuffer *, TexCoordBuffer);
	I_ReadOnlyProperty(const osgCal::VertexBuffer *, VertexBuffer);
	I_ReadOnlyProperty(const osgCal::WeightBuffer *, WeightBuffer);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::CoreModel::Mesh)
	I_Constructor0();
	I_Method0(int, getIndexInVbo);
	I_Method0(int, getIndexesCount);
	I_ReadOnlyProperty(int, IndexInVbo);
	I_ReadOnlyProperty(int, IndexesCount);
	I_PublicMemberProperty(std::string, name);
	I_PublicMemberProperty(osgCal::HwStateDesc, hwStateDesc);
	I_PublicMemberProperty(CalCoreMesh *, coreMesh);
	I_PublicMemberProperty(CalCoreSubmesh *, coreSubMesh);
	I_PublicMemberProperty(int, maxBonesInfluence);
	I_PublicMemberProperty(bool, rigid);
	I_PublicMemberProperty(int, hardwareMeshId);
	I_PublicMemberProperty(CalHardwareModel::CalHardwareMesh *, hardwareMesh);
	I_PublicMemberProperty(osg::ref_ptr< osg::StateSet >, hardwareStateSet);
	I_PublicMemberProperty(osg::ref_ptr< osg::StateSet >, staticHardwareStateSet);
	I_PublicMemberProperty(osg::ref_ptr< osg::StateSet >, stateSet);
	I_PublicMemberProperty(osg::BoundingBox, boundingBox);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::HwMeshStateSetCache)
	I_ConstructorWithDefaults2(IN, osgCal::SwMeshStateSetCache *, swssc, 0, IN, osgCal::TexturesCache *, tc, 0);
	I_Method1(osg::StateSet *, get, IN, const osgCal::HwStateDesc &, swsd);
END_REFLECTOR

BEGIN_OBJECT_REFLECTOR(osgCal::HwStateDesc)
	I_BaseType(osgCal::SwStateDesc);
	I_Constructor0();
	I_ConstructorWithDefaults2(IN, CalCoreMaterial *, m, , IN, const std::string &, dir, std::string());
	I_PublicMemberProperty(osgCal::TextureDesc, normalsMap);
	I_PublicMemberProperty(osgCal::TextureDesc, bumpMap);
	I_PublicMemberProperty(float, normalsMapAmount);
	I_PublicMemberProperty(float, bumpMapAmount);
	I_PublicMemberProperty(int, shaderFlags);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::MaterialDesc)
	I_Constructor0();
	I_Constructor3(IN, CalCoreMaterial *, ccm, IN, float, glossiness, IN, float, opacity);
	I_PublicMemberProperty(osg::Vec4, ambientColor);
	I_PublicMemberProperty(osg::Vec4, diffuseColor);
	I_PublicMemberProperty(osg::Vec4, specularColor);
	I_PublicMemberProperty(float, shininess);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::MaterialsCache)
	I_Constructor0();
	I_Method1(osg::Material *, get, IN, const osgCal::MaterialDesc &, md);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::SwMeshStateSetCache)
	I_ConstructorWithDefaults2(IN, osgCal::MaterialsCache *, mc, 0, IN, osgCal::TexturesCache *, tc, 0);
	I_Method1(osg::StateSet *, get, IN, const osgCal::SwStateDesc &, swsd);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::SwStateDesc)
	I_Constructor0();
	I_PublicMemberProperty(osgCal::MaterialDesc, material);
	I_PublicMemberProperty(osgCal::TextureDesc, diffuseMap);
	I_PublicMemberProperty(int, sides);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgCal::TexturesCache)
	I_Constructor0();
	I_Method1(osg::Texture2D *, get, IN, const osgCal::TextureDesc &, td);
END_REFLECTOR

TYPE_NAME_ALIAS(std::string, osgCal::TextureDesc);

STD_VECTOR_REFLECTOR(std::vector< osgCal::CoreModel::Mesh >);

STD_VECTOR_REFLECTOR(std::vector< std::string >);

