source: OGRE/trunk/ogre_changes/Ogre1.2/OgreMain/include/SpriteParticleRenderer.h @ 768

Revision 768, 2.8 KB checked in by szirmay, 18 years ago (diff)
Line 
1#pragma once
2
3#ifdef GAMETOOLS_ILLUMINATION_MODULE
4
5#include "OgreBillboardParticleRenderer.h"
6#include "SpriteSet.h"
7
8namespace Ogre {
9
10    /** Specialisation of ParticleSystemRenderer to render particles using
11        a BillboardSet.
12    @remarks
13        This renderer has a few more options than the standard particle system,
14        which will be passed to it automatically when the particle system itself
15        does not understand them.
16    */
17    class _OgreExport SpriteParticleRenderer : public ParticleSystemRenderer
18    {
19    protected:
20        /// The billboard set that's doing the rendering
21        SpriteSet* mSpriteSet;
22                int particleSorting;
23
24    public:
25        SpriteParticleRenderer();
26        ~SpriteParticleRenderer();
27
28                void setParticleSorting(int sorting, Camera* cam);
29
30       
31        /// @copydoc ParticleSystemRenderer::getType
32        const String& getType(void) const;
33        /// @copydoc ParticleSystemRenderer::_updateRenderQueue
34        void _updateRenderQueue(RenderQueue* queue,
35            std::list<Particle*>& currentParticles, bool cullIndividually);
36        /// @copydoc ParticleSystemRenderer::_setMaterial
37        void _setMaterial(MaterialPtr& mat);
38        /// @copydoc ParticleSystemRenderer::_notifyCurrentCamera
39        void _notifyCurrentCamera(Camera* cam);
40        /// @copydoc ParticleSystemRenderer::_notifyParticleRotated
41                void _notifyParticleRotated(void){}
42        /// @copydoc ParticleSystemRenderer::_notifyParticleResized
43        void _notifyParticleResized(void);
44        /// @copydoc ParticleSystemRenderer::_notifyParticleQuota
45        void _notifyParticleQuota(size_t quota);
46        /// @copydoc ParticleSystemRenderer::_notifyAttached
47        void _notifyAttached(Node* parent, bool isTagPoint = false);
48        /// @copydoc ParticleSystemRenderer::_notifyDefaultDimensions
49        void _notifyDefaultDimensions(Real width, Real height);
50                /// @copydoc ParticleSystemRenderer::setRenderQueueGroup
51                void setRenderQueueGroup(uint8 queueID);
52                virtual void setKeepParticlesInLocalSpace(bool keepLocal)
53                {
54                        mSpriteSet->setBillboardsInWorldSpace(!keepLocal);
55                }
56                virtual SortMode _getSortMode(void) const
57                {
58                         return mSpriteSet->_getSortMode();
59                }
60
61                /// Access SpriteSet in use
62                SpriteSet* getSpriteSet(void) const { return mSpriteSet; }
63
64    };
65
66    /** Factory class for BillboardParticleRenderer */
67    class _OgreExport SpriteParticleRendererFactory : public ParticleSystemRendererFactory
68    {
69    public:
70        /// @copydoc FactoryObj::getType
71        const String& getType() const;
72        /// @copydoc FactoryObj::createInstance
73        ParticleSystemRenderer* createInstance( const String& name );   
74        /// @copydoc FactoryObj::destroyInstance
75        void destroyInstance( ParticleSystemRenderer* inst);   
76    };
77
78}
79
80
81#endif
Note: See TracBrowser for help on using the repository browser.