Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members   Related Pages  

OgreParticleEmitterFactory.h

Go to the documentation of this file.
00001 /*
00002 -----------------------------------------------------------------------------
00003 This source file is part of OGRE 
00004     (Object-oriented Graphics Rendering Engine)
00005 For the latest info, see http://www.ogre3d.org/
00006 
00007 Copyright © 2000-2002 The OGRE Team
00008 Also see acknowledgements in Readme.html
00009 
00010 This program is free software; you can redistribute it and/or modify it under 
00011 the terms of the GNU Lesser General Public License as published by the Free Software 
00012 Foundation; either version 2 of the License, or (at your option) any later 
00013 version.
00014 
00015 This program is distributed in the hope that it will be useful, but WITHOUT 
00016 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS 
00017 FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
00018 
00019 You should have received a copy of the GNU Lesser General Public License along with 
00020 this program; if not, write to the Free Software Foundation, Inc., 59 Temple 
00021 Place - Suite 330, Boston, MA 02111-1307, USA, or go to 
00022 http://www.gnu.org/copyleft/lesser.txt.
00023 -----------------------------------------------------------------------------
00024 */
00025 #ifndef __ParticleEmitterFactory_H__
00026 #define __ParticleEmitterFactory_H__
00027 
00028 
00029 #include "OgrePrerequisites.h"
00030 #include "OgreParticleEmitter.h"
00031 #include "OgreString.h"
00032 
00033 namespace Ogre {
00034 
00046     class _OgreExport ParticleEmitterFactory
00047     {
00048     protected:
00049         std::vector<ParticleEmitter*> mEmitters;
00050     public:
00051         ParticleEmitterFactory() {};
00052         virtual ~ParticleEmitterFactory() 
00053         {
00054             // Destroy all emitters
00055             std::vector<ParticleEmitter*>::iterator i;
00056             for (i = mEmitters.begin(); i != mEmitters.end(); ++i)
00057             {
00058                 delete (*i);
00059             }
00060             
00061             mEmitters.clear();
00062 
00063         };
00064 
00066         virtual String getName() const = 0;
00067 
00072         virtual ParticleEmitter* createEmitter(void) = 0;
00073 
00075         virtual void destroyEmitter(ParticleEmitter* e)
00076         {
00077             std::vector<ParticleEmitter*>::iterator i;
00078             for (i = mEmitters.begin(); i != mEmitters.end(); ++i)
00079             {
00080                 if ((*i) == e)
00081                 {
00082                     mEmitters.erase(i);
00083                     delete e;
00084                     break;
00085                 }
00086             }
00087         }
00088 
00089     };
00090 
00091 
00092 }
00093 
00094 
00095 #endif
00096 

Copyright © 2002-2003 by The OGRE Team
Last modified Fri May 14 23:22:31 2004