package Ogre;

use 5.006;
use strict;
use warnings;

require DynaLoader;
our @ISA = qw(DynaLoader);

our $VERSION = '0.50';

# use all files under Ogre/ - probably not a good idea
## BEGIN USES
use Ogre::AnimableObject;
use Ogre::AnimableValue;
use Ogre::Animation;
use Ogre::AnimationControllerFunction;
use Ogre::AnimationState;
use Ogre::AnimationStateSet;
use Ogre::AnimationTrack;
use Ogre::AxisAlignedBox;
use Ogre::AxisAlignedBoxSceneQuery;
use Ogre::Billboard;
use Ogre::BillboardChain;
use Ogre::BillboardSet;
use Ogre::Bone;
use Ogre::BorderPanelOverlayElement;
use Ogre::Camera;
use Ogre::ColourValue;
use Ogre::CompositionPass;
use Ogre::CompositionTargetPass;
use Ogre::ConfigFile;
use Ogre::ControllerManager;
use Ogre::ControllerReal;
use Ogre::DataStream;
use Ogre::Degree;
use Ogre::EdgeData;
use Ogre::Entity;
use Ogre::Exception;
use Ogre::Frustum;
use Ogre::GpuProgram;
use Ogre::GpuProgramParameters;
use Ogre::HardwareBuffer;
use Ogre::HardwareBufferManager;
use Ogre::HardwareIndexBuffer;
use Ogre::HardwarePixelBuffer;
use Ogre::HardwareVertexBuffer;
use Ogre::Image;
use Ogre::IndexData;
use Ogre::InstancedGeometry::InstancedObject;
use Ogre::InstancedGeometry;
use Ogre::IntersectionSceneQuery;
use Ogre::KeyFrame;
use Ogre::Light;
use Ogre::Log;
use Ogre::LogManager;
use Ogre::ManualObject::ManualObjectSection;
use Ogre::ManualObject;
use Ogre::ManualResourceLoader;
use Ogre::Material;
use Ogre::MaterialManager;
use Ogre::Math;
use Ogre::Matrix3;
use Ogre::Matrix4;
use Ogre::Mesh;
use Ogre::MeshManager;
use Ogre::MeshPtr;
use Ogre::MovableObject;
use Ogre::MultiRenderTarget;
use Ogre::Node;
use Ogre::NodeAnimationTrack;
use Ogre::NumericAnimationTrack;
use Ogre::Overlay;
use Ogre::OverlayContainer;
use Ogre::OverlayElement;
use Ogre::OverlayManager;
use Ogre::PanelOverlayElement;
use Ogre::Particle;
use Ogre::ParticleAffector;
use Ogre::ParticleEmitter;
use Ogre::ParticleSystem;
use Ogre::ParticleSystemRenderer;
use Ogre::Pass;
use Ogre::PassthroughControllerFunction;
use Ogre::PatchMesh;
use Ogre::PatchSurface;
use Ogre::Plane;
use Ogre::PlaneBoundedVolume;
use Ogre::PlaneBoundedVolumeListSceneQuery;
use Ogre::Pose;
use Ogre::ProgressiveMesh;
use Ogre::Quaternion;
use Ogre::QueuedRenderableCollection;
use Ogre::Radian;
use Ogre::Ray;
use Ogre::RaySceneQuery;
use Ogre::RegionSceneQuery;
use Ogre::RenderOperation;
use Ogre::RenderSystem;
use Ogre::RenderSystemCapabilities;
use Ogre::RenderTarget;
use Ogre::RenderTexture;
use Ogre::RenderWindow;
use Ogre::Renderable;
use Ogre::Resource;
use Ogre::ResourceGroupManager;
use Ogre::ResourceManager;
use Ogre::RibbonTrail;
use Ogre::Root;
use Ogre::ScaleControllerFunction;
use Ogre::SceneManager;
use Ogre::SceneNode;
use Ogre::SceneQuery::WorldFragment;
use Ogre::SceneQuery;
use Ogre::ScriptLoader;
use Ogre::Serializer;
use Ogre::ShadowCaster;
use Ogre::Skeleton;
use Ogre::SkeletonInstance;
use Ogre::SkeletonManager;
use Ogre::Sphere;
use Ogre::SphereSceneQuery;
use Ogre::StaticGeometry;
use Ogre::StringInterface;
use Ogre::SubEntity;
use Ogre::SubMesh;
use Ogre::TagPoint;
use Ogre::Technique;
use Ogre::TextAreaOverlayElement;
use Ogre::Texture;
use Ogre::TextureManager;
use Ogre::TextureUnitState;
use Ogre::TimeIndex;
use Ogre::Timer;
use Ogre::TransformKeyFrame;
use Ogre::Vector2;
use Ogre::Vector3;
use Ogre::Vector4;
use Ogre::VertexAnimationTrack;
use Ogre::VertexBufferBinding;
use Ogre::VertexCacheProfiler;
use Ogre::VertexData;
use Ogre::VertexDeclaration;
use Ogre::VertexElement;
use Ogre::Viewport;
use Ogre::WaveformControllerFunction;
use Ogre::WindowEventUtilities;
## END USES

sub dl_load_flags { $^O eq 'darwin' ? 0x00 : 0x01 }

__PACKAGE__->bootstrap($VERSION);


########## GENERATED CONSTANTS BEGIN
require Exporter;
unshift @Ogre::ISA, 'Exporter';

our %EXPORT_TAGS = (
	'SceneType' => [qw(
		ST_GENERIC
		ST_EXTERIOR_CLOSE
		ST_EXTERIOR_FAR
		ST_EXTERIOR_REAL_FAR
		ST_INTERIOR
	)],
	'StencilOperation' => [qw(
		SOP_KEEP
		SOP_ZERO
		SOP_REPLACE
		SOP_INCREMENT
		SOP_DECREMENT
		SOP_INCREMENT_WRAP
		SOP_DECREMENT_WRAP
		SOP_INVERT
	)],
	'TexCoordCalcMethod' => [qw(
		TEXCALC_NONE
		TEXCALC_ENVIRONMENT_MAP
		TEXCALC_ENVIRONMENT_MAP_PLANAR
		TEXCALC_ENVIRONMENT_MAP_REFLECTION
		TEXCALC_ENVIRONMENT_MAP_NORMAL
		TEXCALC_PROJECTIVE_TEXTURE
	)],
	'Capabilities' => [qw(
		RSC_AUTOMIPMAP
		RSC_BLENDING
		RSC_ANISOTROPY
		RSC_DOT3
		RSC_CUBEMAPPING
		RSC_HWSTENCIL
		RSC_VBO
		RSC_VERTEX_PROGRAM
		RSC_FRAGMENT_PROGRAM
		RSC_TEXTURE_COMPRESSION
		RSC_TEXTURE_COMPRESSION_DXT
		RSC_TEXTURE_COMPRESSION_VTC
		RSC_SCISSOR_TEST
		RSC_TWO_SIDED_STENCIL
		RSC_STENCIL_WRAP
		RSC_HWOCCLUSION
		RSC_USER_CLIP_PLANES
		RSC_VERTEX_FORMAT_UBYTE4
		RSC_INFINITE_FAR_PLANE
		RSC_HWRENDER_TO_TEXTURE
		RSC_TEXTURE_FLOAT
		RSC_NON_POWER_OF_2_TEXTURES
		RSC_TEXTURE_3D
		RSC_POINT_SPRITES
		RSC_POINT_EXTENDED_PARAMETERS
		RSC_VERTEX_TEXTURE_FETCH
		RSC_MIPMAP_LOD_BIAS
	)],
	'IlluminationStage' => [qw(
		IS_AMBIENT
		IS_PER_LIGHT
		IS_DECAL
	)],
	'GuiVerticalAlignment' => [qw(
		GVA_TOP
		GVA_CENTER
		GVA_BOTTOM
	)],
	'GuiHorizontalAlignment' => [qw(
		GHA_LEFT
		GHA_CENTER
		GHA_RIGHT
	)],
	'GuiMetricsMode' => [qw(
		GMM_RELATIVE
		GMM_PIXELS
		GMM_RELATIVE_ASPECT_ADJUSTED
	)],
	'MaterialScriptSection' => [qw(
		MSS_NONE
		MSS_MATERIAL
		MSS_TECHNIQUE
		MSS_PASS
		MSS_TEXTUREUNIT
		MSS_PROGRAM_REF
		MSS_PROGRAM
		MSS_DEFAULT_PARAMETERS
		MSS_TEXTURESOURCE
	)],
	'LogMessageLevel' => [qw(
		LML_TRIVIAL
		LML_NORMAL
		LML_CRITICAL
	)],
	'LoggingLevel' => [qw(
		LL_LOW
		LL_NORMAL
		LL_BOREME
	)],
	'SkeletonAnimationBlendMode' => [qw(
		ANIMBLEND_AVERAGE
		ANIMBLEND_CUMULATIVE
	)],
	'TextureMipmap' => [qw(
		MIP_UNLIMITED
		MIP_DEFAULT
	)],
	'TextureType' => [qw(
		TEX_TYPE_1D
		TEX_TYPE_2D
		TEX_TYPE_3D
		TEX_TYPE_CUBE_MAP
	)],
	'TextureUsage' => [qw(
		TU_STATIC
		TU_DYNAMIC
		TU_WRITE_ONLY
		TU_STATIC_WRITE_ONLY
		TU_DYNAMIC_WRITE_ONLY
		TU_DYNAMIC_WRITE_ONLY_DISCARDABLE
		TU_AUTOMIPMAP
		TU_RENDERTARGET
		TU_DEFAULT
	)],
	'ImageFlags' => [qw(
		IF_COMPRESSED
		IF_CUBEMAP
		IF_3D_TEXTURE
	)],
	'PixelComponentType' => [qw(
		PCT_BYTE
		PCT_SHORT
		PCT_FLOAT16
		PCT_FLOAT32
		PCT_COUNT
	)],
	'PixelFormatFlags' => [qw(
		PFF_HASALPHA
		PFF_COMPRESSED
		PFF_FLOAT
		PFF_DEPTH
		PFF_NATIVEENDIAN
		PFF_LUMINANCE
	)],
	'PixelFormat' => [qw(
		PF_UNKNOWN
		PF_L8
		PF_BYTE_L
		PF_L16
		PF_SHORT_L
		PF_A8
		PF_BYTE_A
		PF_A4L4
		PF_BYTE_LA
		PF_R5G6B5
		PF_B5G6R5
		PF_R3G3B2
		PF_A4R4G4B4
		PF_A1R5G5B5
		PF_R8G8B8
		PF_B8G8R8
		PF_A8R8G8B8
		PF_A8B8G8R8
		PF_B8G8R8A8
		PF_R8G8B8A8
		PF_X8R8G8B8
		PF_X8B8G8R8
		PF_BYTE_RGB
		PF_BYTE_BGR
		PF_BYTE_BGRA
		PF_BYTE_RGBA
		PF_A2R10G10B10
		PF_A2B10G10R10
		PF_DXT1
		PF_DXT2
		PF_DXT3
		PF_DXT4
		PF_DXT5
		PF_FLOAT16_R
		PF_FLOAT16_RGB
		PF_FLOAT16_RGBA
		PF_FLOAT32_R
		PF_FLOAT32_RGB
		PF_FLOAT32_RGBA
		PF_FLOAT16_GR
		PF_FLOAT32_GR
		PF_DEPTH
		PF_SHORT_RGBA
		PF_SHORT_GR
		PF_SHORT_RGB
		PF_COUNT
	)],
	'FrustumPlane' => [qw(
		FRUSTUM_PLANE_NEAR
		FRUSTUM_PLANE_FAR
		FRUSTUM_PLANE_LEFT
		FRUSTUM_PLANE_RIGHT
		FRUSTUM_PLANE_TOP
		FRUSTUM_PLANE_BOTTOM
	)],
	'ProjectionType' => [qw(
		PT_ORTHOGRAPHIC
		PT_PERSPECTIVE
	)],
	'BillboardType' => [qw(
		BBT_POINT
		BBT_ORIENTED_COMMON
		BBT_ORIENTED_SELF
		BBT_PERPENDICULAR_COMMON
		BBT_PERPENDICULAR_SELF
	)],
	'BillboardRotationType' => [qw(
		BBR_VERTEX
		BBR_TEXCOORD
	)],
	'BillboardOrigin' => [qw(
		BBO_TOP_LEFT
		BBO_TOP_CENTER
		BBO_TOP_RIGHT
		BBO_CENTER_LEFT
		BBO_CENTER
		BBO_CENTER_RIGHT
		BBO_BOTTOM_LEFT
		BBO_BOTTOM_CENTER
		BBO_BOTTOM_RIGHT
	)],
	'ShadowRenderableFlags' => [qw(
		SRF_INCLUDE_LIGHT_CAP
		SRF_INCLUDE_DARK_CAP
		SRF_EXTRUDE_TO_INFINITY
	)],
	'GpuConstantType' => [qw(
		GCT_FLOAT1
		GCT_FLOAT2
		GCT_FLOAT3
		GCT_FLOAT4
		GCT_SAMPLER1D
		GCT_SAMPLER2D
		GCT_SAMPLER3D
		GCT_SAMPLERCUBE
		GCT_SAMPLER1DSHADOW
		GCT_SAMPLER2DSHADOW
		GCT_MATRIX_2X2
		GCT_MATRIX_2X3
		GCT_MATRIX_2X4
		GCT_MATRIX_3X2
		GCT_MATRIX_3X3
		GCT_MATRIX_3X4
		GCT_MATRIX_4X2
		GCT_MATRIX_4X3
		GCT_MATRIX_4X4
		GCT_INT1
		GCT_INT2
		GCT_INT3
		GCT_INT4
		GCT_UNKNOWN
	)],
	'GpuProgramType' => [qw(
		GPT_VERTEX_PROGRAM
		GPT_FRAGMENT_PROGRAM
	)],
	'SceneBlendFactor' => [qw(
		SBF_ONE
		SBF_ZERO
		SBF_DEST_COLOUR
		SBF_SOURCE_COLOUR
		SBF_ONE_MINUS_DEST_COLOUR
		SBF_ONE_MINUS_SOURCE_COLOUR
		SBF_DEST_ALPHA
		SBF_SOURCE_ALPHA
		SBF_ONE_MINUS_DEST_ALPHA
		SBF_ONE_MINUS_SOURCE_ALPHA
	)],
	'SceneBlendType' => [qw(
		SBT_TRANSPARENT_ALPHA
		SBT_TRANSPARENT_COLOUR
		SBT_ADD
		SBT_MODULATE
		SBT_REPLACE
	)],
	'LayerBlendSource' => [qw(
		LBS_CURRENT
		LBS_TEXTURE
		LBS_DIFFUSE
		LBS_SPECULAR
		LBS_MANUAL
	)],
	'LayerBlendOperationEx' => [qw(
		LBX_SOURCE1
		LBX_SOURCE2
		LBX_MODULATE
		LBX_MODULATE_X2
		LBX_MODULATE_X4
		LBX_ADD
		LBX_ADD_SIGNED
		LBX_ADD_SMOOTH
		LBX_SUBTRACT
		LBX_BLEND_DIFFUSE_ALPHA
		LBX_BLEND_TEXTURE_ALPHA
		LBX_BLEND_CURRENT_ALPHA
		LBX_BLEND_MANUAL
		LBX_DOTPRODUCT
		LBX_BLEND_DIFFUSE_COLOUR
	)],
	'LayerBlendOperation' => [qw(
		LBO_REPLACE
		LBO_ADD
		LBO_MODULATE
		LBO_ALPHA_BLEND
	)],
	'LayerBlendType' => [qw(
		LBT_COLOUR
		LBT_ALPHA
	)],
	'RenderQueueGroupID' => [qw(
		RENDER_QUEUE_BACKGROUND
		RENDER_QUEUE_SKIES_EARLY
		RENDER_QUEUE_1
		RENDER_QUEUE_2
		RENDER_QUEUE_WORLD_GEOMETRY_1
		RENDER_QUEUE_3
		RENDER_QUEUE_4
		RENDER_QUEUE_MAIN
		RENDER_QUEUE_6
		RENDER_QUEUE_7
		RENDER_QUEUE_WORLD_GEOMETRY_2
		RENDER_QUEUE_8
		RENDER_QUEUE_9
		RENDER_QUEUE_SKIES_LATE
		RENDER_QUEUE_OVERLAY
		RENDER_QUEUE_MAX
	)],
	'ParameterType' => [qw(
		PT_BOOL
		PT_REAL
		PT_INT
		PT_UNSIGNED_INT
		PT_SHORT
		PT_UNSIGNED_SHORT
		PT_LONG
		PT_UNSIGNED_LONG
		PT_STRING
		PT_VECTOR3
		PT_MATRIX3
		PT_MATRIX4
		PT_QUATERNION
		PT_COLOURVALUE
	)],
	'FrameBufferType' => [qw(
		FBT_COLOUR
		FBT_DEPTH
		FBT_STENCIL
	)],
	'SortMode' => [qw(
		SM_DIRECTION
		SM_DISTANCE
	)],
	'TrackVertexColourEnum' => [qw(
		TVC_NONE
		TVC_AMBIENT
		TVC_DIFFUSE
		TVC_SPECULAR
		TVC_EMISSIVE
	)],
	'ShadowTechnique' => [qw(
		SHADOWTYPE_NONE
		SHADOWDETAILTYPE_ADDITIVE
		SHADOWDETAILTYPE_MODULATIVE
		SHADOWDETAILTYPE_INTEGRATED
		SHADOWDETAILTYPE_STENCIL
		SHADOWDETAILTYPE_TEXTURE
		SHADOWTYPE_STENCIL_MODULATIVE
		SHADOWTYPE_STENCIL_ADDITIVE
		SHADOWTYPE_TEXTURE_MODULATIVE
		SHADOWTYPE_TEXTURE_ADDITIVE
		SHADOWTYPE_TEXTURE_ADDITIVE_INTEGRATED
		SHADOWTYPE_TEXTURE_MODULATIVE_INTEGRATED
	)],
	'PolygonMode' => [qw(
		PM_POINTS
		PM_WIREFRAME
		PM_SOLID
	)],
	'WaveformType' => [qw(
		WFT_SINE
		WFT_TRIANGLE
		WFT_SQUARE
		WFT_SAWTOOTH
		WFT_INVERSE_SAWTOOTH
		WFT_PWM
	)],
	'ManualCullingMode' => [qw(
		MANUAL_CULL_NONE
		MANUAL_CULL_BACK
		MANUAL_CULL_FRONT
	)],
	'CullingMode' => [qw(
		CULL_NONE
		CULL_CLOCKWISE
		CULL_ANTICLOCKWISE
	)],
	'FogMode' => [qw(
		FOG_NONE
		FOG_EXP
		FOG_EXP2
		FOG_LINEAR
	)],
	'ShadeOptions' => [qw(
		SO_FLAT
		SO_GOURAUD
		SO_PHONG
	)],
	'FilterOptions' => [qw(
		FO_NONE
		FO_POINT
		FO_LINEAR
		FO_ANISOTROPIC
	)],
	'FilterType' => [qw(
		FT_MIN
		FT_MAG
		FT_MIP
	)],
	'TextureFilterOptions' => [qw(
		TFO_NONE
		TFO_BILINEAR
		TFO_TRILINEAR
		TFO_ANISOTROPIC
	)],
	'CompareFunction' => [qw(
		CMPF_ALWAYS_FAIL
		CMPF_ALWAYS_PASS
		CMPF_LESS
		CMPF_LESS_EQUAL
		CMPF_EQUAL
		CMPF_NOT_EQUAL
		CMPF_GREATER_EQUAL
		CMPF_GREATER
	)],
	'VertexAnimationType' => [qw(
		VAT_NONE
		VAT_MORPH
		VAT_POSE
	)],
	'VertexElementType' => [qw(
		VET_FLOAT1
		VET_FLOAT2
		VET_FLOAT3
		VET_FLOAT4
		VET_COLOUR
		VET_SHORT1
		VET_SHORT2
		VET_SHORT3
		VET_SHORT4
		VET_UBYTE4
		VET_COLOUR_ARGB
		VET_COLOUR_ABGR
	)],
	'VertexElementSemantic' => [qw(
		VES_POSITION
		VES_BLEND_WEIGHTS
		VES_BLEND_INDICES
		VES_NORMAL
		VES_DIFFUSE
		VES_SPECULAR
		VES_TEXTURE_COORDINATES
		VES_BINORMAL
		VES_TANGENT
	)],
);

$EXPORT_TAGS{'all'} = [ map { @{ $EXPORT_TAGS{$_} } } keys %EXPORT_TAGS ];
our @EXPORT_OK = @{ $EXPORT_TAGS{'all'} };
our @EXPORT = ();
########## GENERATED CONSTANTS END


1;

__END__


=head1 NAME

Ogre - Perl binding for the OGRE C++ graphics library

=head1 SYNOPSIS

  use Ogre;
  # see examples/README.txt

=head1 DESCRIPTION

For more details, see F<README.txt>.

For documentation on specific classes, see the perldoc for the class.
There is a L<list below|/"CLASSES"> of classes currently wrapped.
The documentation for each class is somewhat minimal. In the DESCRIPTION
section there will be a link to the corresponding C++ API documentation
on the OGRE website. The documentation of methods uses C++ types to describe
its parameters and return values, so some translation to Perl is generally
required.

Not all methods are currently wrapped, although there are enough to run
the examples, which isn't bad. But expect to find that your favorite method
isn't wrapped yet. I'm working on completely wrapping the methods, but it's
still not there. One particular "category" of methods not yet wrapped is those
that return a C++ reference, rather than a pointer (one exception is Node::getPosition).
Methods that return fundamental types, like bool or int, are usually wrapped,
provided their arguments aren't too weird. There are also some overloaded
C++ methods (i.e. different argument parameter types but the same method name)
that have only one version of that method implemented; I have to work on
how to handle that.

See F<TODO.txt> for more things that aren't done yet.

=head1 CLASSES

This is the list of classes that are at least partially wrapped.

=for comment CLASS LIST BEGIN

=over

=item L<Ogre::AnimableObject>

=item L<Ogre::AnimableValue>

=item L<Ogre::Animation>

=item L<Ogre::AnimationControllerFunction>

=item L<Ogre::AnimationObject>

=item L<Ogre::AnimationState>

=item L<Ogre::AnimationStateSet>

=item L<Ogre::AnimationTrack>

=item L<Ogre::AxisAlignedBox>

=item L<Ogre::AxisAlignedBoxSceneQuery>

=item L<Ogre::Billboard>

=item L<Ogre::BillboardChain>

=item L<Ogre::BillboardSet>

=item L<Ogre::Bone>

=item L<Ogre::BorderPanelOverlayElement>

=item L<Ogre::Camera>

=item L<Ogre::ColourValue>

=item L<Ogre::CompositionPass>

=item L<Ogre::CompositionTargetPass>

=item L<Ogre::ConfigFile>

=item L<Ogre::ControllerManager>

=item L<Ogre::ControllerReal>

=item L<Ogre::DataStream>

=item L<Ogre::Degree>

=item L<Ogre::EdgeData>

=item L<Ogre::Entity>

=item L<Ogre::ExampleApplication>

=item L<Ogre::ExampleFrameListener>

=item L<Ogre::Exception>

=item L<Ogre::FrameEvent>

=item L<Ogre::FrameStats>

=item L<Ogre::Frustum>

=item L<Ogre::GpuProgram>

=item L<Ogre::GpuProgramParameters>

=item L<Ogre::HardwareBuffer>

=item L<Ogre::HardwareBufferManager>

=item L<Ogre::HardwareIndexBuffer>

=item L<Ogre::HardwarePixelBuffer>

=item L<Ogre::HardwareVertexBuffer>

=item L<Ogre::Image>

=item L<Ogre::IndexData>

=item L<Ogre::InstancedGeometry>

=item L<Ogre::IntersectionSceneQuery>

=item L<Ogre::KeyFrame>

=item L<Ogre::Light>

=item L<Ogre::Log>

=item L<Ogre::LogManager>

=item L<Ogre::ManualObject>

=item L<Ogre::ManualObjectSection>

=item L<Ogre::ManualResourceLoader>

=item L<Ogre::Material>

=item L<Ogre::MaterialManager>

=item L<Ogre::Math>

=item L<Ogre::Matrix3>

=item L<Ogre::Matrix4>

=item L<Ogre::Mesh>

=item L<Ogre::MeshManager>

=item L<Ogre::MeshPtr>

=item L<Ogre::MovableObject>

=item L<Ogre::MovablePlane>

=item L<Ogre::MultiRenderTarget>

=item L<Ogre::Node>

=item L<Ogre::NodeAnimationTrack>

=item L<Ogre::NumericAnimationTrack>

=item L<Ogre::Overlay>

=item L<Ogre::OverlayContainer>

=item L<Ogre::OverlayElement>

=item L<Ogre::OverlayManager>

=item L<Ogre::PanelOverlayElement>

=item L<Ogre::Particle>

=item L<Ogre::ParticleAffector>

=item L<Ogre::ParticleEmitter>

=item L<Ogre::ParticleSystem>

=item L<Ogre::ParticleSystemRenderer>

=item L<Ogre::Pass>

=item L<Ogre::PassthroughControllerFunction>

=item L<Ogre::PatchMesh>

=item L<Ogre::PatchSurface>

=item L<Ogre::Plane>

=item L<Ogre::PlaneBoundedVolume>

=item L<Ogre::PlaneBoundedVolumeListSceneQuery>

=item L<Ogre::Pose>

=item L<Ogre::ProgressiveMesh>

=item L<Ogre::Quaternion>

=item L<Ogre::QueuedRenderableCollection>

=item L<Ogre::Radian>

=item L<Ogre::Ray>

=item L<Ogre::RaySceneQuery>

=item L<Ogre::RegionSceneQuery>

=item L<Ogre::Renderable>

=item L<Ogre::RenderOperation>

=item L<Ogre::RenderQueue>

=item L<Ogre::RenderSystem>

=item L<Ogre::RenderSystemCapabilities>

=item L<Ogre::RenderTarget>

=item L<Ogre::RenderTexture>

=item L<Ogre::RenderWindow>

=item L<Ogre::Resource>

=item L<Ogre::ResourceGroupManager>

=item L<Ogre::ResourceManager>

=item L<Ogre::RibbonTrail>

=item L<Ogre::Root>

=item L<Ogre::ScaleControllerFunction>

=item L<Ogre::SceneManager>

=item L<Ogre::SceneNode>

=item L<Ogre::SceneQuery>

=item L<Ogre::ScriptLoader>

=item L<Ogre::Serializer>

=item L<Ogre::ShadowCaster>

=item L<Ogre::SimpleRenderable>

=item L<Ogre::Skeleton>

=item L<Ogre::SkeletonInstance>

=item L<Ogre::SkeletonManager>

=item L<Ogre::Sphere>

=item L<Ogre::SphereSceneQuery>

=item L<Ogre::StaticGeometry>

=item L<Ogre::StringInterface>

=item L<Ogre::SubEntity>

=item L<Ogre::SubMesh>

=item L<Ogre::TagPoint>

=item L<Ogre::Technique>

=item L<Ogre::TextAreaOverlayElement>

=item L<Ogre::Texture>

=item L<Ogre::TextureManager>

=item L<Ogre::TextureUnitState>

=item L<Ogre::TimeIndex>

=item L<Ogre::Timer>

=item L<Ogre::TransformKeyFrame>

=item L<Ogre::Vector2>

=item L<Ogre::Vector3>

=item L<Ogre::Vector4>

=item L<Ogre::VertexAnimationTrack>

=item L<Ogre::VertexBufferBinding>

=item L<Ogre::VertexCacheProfiler>

=item L<Ogre::VertexData>

=item L<Ogre::VertexDeclaration>

=item L<Ogre::VertexElement>

=item L<Ogre::Viewport>

=item L<Ogre::WaveformControllerFunction>

=item L<Ogre::WindowEventUtilities>

=item L<Ogre::WorldFragment>

=back

=for comment CLASS LIST END

=head1 AUTHOR

Scott Lanning E<lt>slanning@cpan.orgE<gt>

For licensing info, see F<README.txt>.

=cut
