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

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

#include <osg/Matrix>
#include <osg/Vec3>
#include <osg/Vec4>
#include <osgParticle/Interpolator>
#include <osgParticle/Particle>
#include <osgParticle/ParticleSystem>
#include <osgParticle/range>

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

BEGIN_ENUM_REFLECTOR(osgParticle::Particle::Shape)
	I_EnumLabel(osgParticle::Particle::POINT);
	I_EnumLabel(osgParticle::Particle::QUAD);
	I_EnumLabel(osgParticle::Particle::QUAD_TRIANGLESTRIP);
	I_EnumLabel(osgParticle::Particle::HEXAGON);
	I_EnumLabel(osgParticle::Particle::LINE);
END_REFLECTOR

BEGIN_VALUE_REFLECTOR(osgParticle::Particle)
	I_Constructor0();
	I_Method0(osgParticle::Particle::Shape, getShape);
	I_Method1(void, setShape, IN, osgParticle::Particle::Shape, s);
	I_Method0(bool, isAlive);
	I_Method0(double, getLifeTime);
	I_Method0(double, getAge);
	I_Method0(const osgParticle::rangef &, getSizeRange);
	I_Method0(const osgParticle::rangef &, getAlphaRange);
	I_Method0(const osgParticle::rangev4 &, getColorRange);
	I_Method0(const osgParticle::Interpolator *, getSizeInterpolator);
	I_Method0(const osgParticle::Interpolator *, getAlphaInterpolator);
	I_Method0(const osgParticle::Interpolator *, getColorInterpolator);
	I_Method0(float, getRadius);
	I_Method0(float, getMass);
	I_Method0(float, getMassInv);
	I_Method0(const osg::Vec3 &, getPosition);
	I_Method0(const osg::Vec3 &, getVelocity);
	I_Method0(const osg::Vec3 &, getPreviousPosition);
	I_Method0(const osg::Vec3 &, getAngle);
	I_Method0(const osg::Vec3 &, getAngularVelocity);
	I_Method0(const osg::Vec3 &, getPreviousAngle);
	I_Method0(const osg::Vec4 &, getCurrentColor);
	I_Method0(float, getCurrentAlpha);
	I_Method0(const float, getSTexCoord);
	I_Method0(float, getTCoord);
	I_Method0(int, getTileS);
	I_Method0(int, getTileT);
	I_Method0(int, getNumTiles);
	I_Method0(void, kill);
	I_Method1(void, setLifeTime, IN, double, t);
	I_Method1(void, setSizeRange, IN, const osgParticle::rangef &, r);
	I_Method1(void, setAlphaRange, IN, const osgParticle::rangef &, r);
	I_Method1(void, setColorRange, IN, const osgParticle::rangev4 &, r);
	I_Method1(void, setSizeInterpolator, IN, osgParticle::Interpolator *, ri);
	I_Method1(void, setAlphaInterpolator, IN, osgParticle::Interpolator *, ai);
	I_Method1(void, setColorInterpolator, IN, osgParticle::Interpolator *, ci);
	I_Method1(void, setRadius, IN, float, r);
	I_Method1(void, setMass, IN, float, m);
	I_Method1(void, setPosition, IN, const osg::Vec3 &, p);
	I_Method1(void, setVelocity, IN, const osg::Vec3 &, v);
	I_Method1(void, addVelocity, IN, const osg::Vec3 &, dv);
	I_Method1(void, transformPositionVelocity, IN, const osg::Matrix &, xform);
	I_Method3(void, transformPositionVelocity, IN, const osg::Matrix &, xform1, IN, const osg::Matrix &, xform2, IN, float, r);
	I_Method1(void, setAngle, IN, const osg::Vec3 &, a);
	I_Method1(void, setAngularVelocity, IN, const osg::Vec3 &, v);
	I_Method1(void, addAngularVelocity, IN, const osg::Vec3 &, dv);
	I_Method1(void, transformAngleVelocity, IN, const osg::Matrix &, xform);
	I_Method1(bool, update, IN, double, dt);
	I_Method0(void, beginRender);
	I_MethodWithDefaults4(void, render, IN, const osg::Vec3 &, xpos, , IN, const osg::Vec3 &, px, , IN, const osg::Vec3 &, py, , IN, float, scale, 1.0f);
	I_Method0(void, endRender);
	I_Method0(float, getCurrentSize);
	I_MethodWithDefaults3(void, setTextureTile, IN, int, sTile, , IN, int, tTile, , IN, int, numTiles, 0);
	I_Method1(void, setPreviousParticle, IN, int, previous);
	I_Method0(int, getPreviousParticle);
	I_Method1(void, setNextParticle, IN, int, next);
	I_Method0(int, getNextParticle);
	I_Method1(void, setUpTexCoordsAsPartOfConnectedParticleSystem, IN, osgParticle::ParticleSystem *, ps);
	I_ReadOnlyProperty(double, Age);
	I_WriteOnlyProperty(osgParticle::Interpolator *, AlphaInterpolator);
	I_Property(const osgParticle::rangef &, AlphaRange);
	I_Property(const osg::Vec3 &, Angle);
	I_Property(const osg::Vec3 &, AngularVelocity);
	I_WriteOnlyProperty(osgParticle::Interpolator *, ColorInterpolator);
	I_Property(const osgParticle::rangev4 &, ColorRange);
	I_ReadOnlyProperty(float, CurrentAlpha);
	I_ReadOnlyProperty(const osg::Vec4 &, CurrentColor);
	I_ReadOnlyProperty(float, CurrentSize);
	I_Property(double, LifeTime);
	I_Property(float, Mass);
	I_ReadOnlyProperty(float, MassInv);
	I_Property(int, NextParticle);
	I_Property(const osg::Vec3 &, Position);
	I_ReadOnlyProperty(const osg::Vec3 &, PreviousAngle);
	I_Property(int, PreviousParticle);
	I_ReadOnlyProperty(const osg::Vec3 &, PreviousPosition);
	I_Property(float, Radius);
	I_ReadOnlyProperty(const float, STexCoord);
	I_Property(osgParticle::Particle::Shape, Shape);
	I_WriteOnlyProperty(osgParticle::Interpolator *, SizeInterpolator);
	I_Property(const osgParticle::rangef &, SizeRange);
	I_ReadOnlyProperty(float, TCoord);
	I_ReadOnlyProperty(int, TileS);
	I_ReadOnlyProperty(int, TileT);
	I_WriteOnlyProperty(osgParticle::ParticleSystem *, UpTexCoordsAsPartOfConnectedParticleSystem);
	I_Property(const osg::Vec3 &, Velocity);
END_REFLECTOR

