28 #ifndef __ParticleSystemManager_H__
29 #define __ParticleSystemManager_H__
44 class ParticleSystemFactory;
123 const String& resourceGroup);
345 mSystemTemplates.begin(), mSystemTemplates.end());
Superclass for all objects that wish to use custom memory allocators when their new / delete operator...
Concrete IteratorWrapper for nonconst access to the underlying key-value container.
Interface definition for a factory class which produces a certain kind of MovableObject,...
Abstract class defining a movable object in a scene.
Abstract class defining the interface to be implemented by creators of ParticleAffector subclasses.
Abstract class defining the interface to be implemented by particle affectors.
Abstract class defining the interface to be implemented by creators of ParticleEmitter subclasses.
Abstract class defining the interface to be implemented by particle emitters.
Factory object for creating ParticleSystem instances.
const String & getType(void) const
Get the type of the object to be created.
void destroyInstance(MovableObject *obj)
Destroy an instance of the object.
MovableObject * createInstanceImpl(const String &name, const NameValuePairList *params)
Internal implementation of create method - must be overridden.
static String FACTORY_TYPE_NAME
Manages particle systems, particle system scripts (templates) and the available emitter & affector fa...
void skipToNextOpenBrace(DataStreamPtr &chunk)
Internal script parsing method.
ParticleEmitterFactoryIterator getEmitterFactoryIterator(void)
Return an iterator over the emitter factories currently registered.
ParticleAffectorFactoryIterator getAffectorFactoryIterator(void)
Return an iterator over the affector factories currently registered.
void _destroyEmitter(ParticleEmitter *emitter)
Internal method for destroying an emitter.
void parseAffectorAttrib(const String &line, ParticleAffector *sys)
Internal script parsing method.
const StringVector & getScriptPatterns(void) const
Gets the file patterns which should be used to find scripts for this class.
ParticleSystemTemplateIterator getTemplateIterator(void)
Gets an iterator over the list of particle system templates.
map< String, ParticleSystemRendererFactory * >::type ParticleSystemRendererFactoryMap
void parseEmitterAttrib(const String &line, ParticleEmitter *sys)
Internal script parsing method.
void _destroyAffector(ParticleAffector *affector)
Internal method for destroying an affector.
static ParticleSystemManager * getSingletonPtr(void)
Override standard Singleton retrieval.
ParticleSystem * createSystemImpl(const String &name, const String &templateName)
Internal implementation of createSystem.
ParticleAffector * _createAffector(const String &affectorType, ParticleSystem *psys)
Internal method for creating a new affector from a factory.
void addRendererFactory(ParticleSystemRendererFactory *factory)
Registers a factory class for creating ParticleSystemRenderer instances.
StringVector mScriptPatterns
void addEmitterFactory(ParticleEmitterFactory *factory)
Adds a new 'factory' object for emitters to the list of available emitter types.
void removeTemplate(const String &name, bool deleteTemplate=true)
Removes a specified template from the ParticleSystemManager.
ParticleSystem * createSystemImpl(const String &name, size_t quota, const String &resourceGroup)
Internal implementation of createSystem.
void addAffectorFactory(ParticleAffectorFactory *factory)
Adds a new 'factory' object for affectors to the list of available affector types.
ParticleRendererFactoryIterator getRendererFactoryIterator(void)
Return an iterator over the renderer factories currently registered.
ParticleTemplateMap mSystemTemplates
Templates based on scripts.
MapIterator< ParticleTemplateMap > ParticleSystemTemplateIterator
ParticleAffectorFactoryMap mAffectorFactories
Factories for named affector types (can be extended using plugins)
void parseScript(DataStreamPtr &stream, const String &groupName)
Parse a script file.
ParticleSystemFactory * mFactory
void parseNewEmitter(const String &type, DataStreamPtr &chunk, ParticleSystem *sys)
Internal script parsing method.
void removeTemplatesByResourceGroup(const String &resourceGroup)
Removes all templates that belong to a secific Resource Group from the ParticleSystemManager.
void removeAllTemplates(bool deleteTemplate=true)
Removes a specified template from the ParticleSystemManager.
void destroySystemImpl(ParticleSystem *sys)
Internal implementation of destroySystem.
void parseNewAffector(const String &type, DataStreamPtr &chunk, ParticleSystem *sys)
Internal script parsing method.
static ParticleSystemManager & getSingleton(void)
Override standard Singleton retrieval.
ParticleEmitter * _createEmitter(const String &emitterType, ParticleSystem *psys)
Internal method for creating a new emitter from a factory.
map< String, ParticleEmitterFactory * >::type ParticleEmitterFactoryMap
virtual ~ParticleSystemManager()
ParticleSystemFactory * _getFactory(void)
Get an instance of ParticleSystemFactory (internal use).
void addTemplate(const String &name, ParticleSystem *sysTemplate)
Adds a new particle system template to the list of available templates.
void parseAttrib(const String &line, ParticleSystem *sys)
Internal script parsing method.
void _destroyRenderer(ParticleSystemRenderer *renderer)
Internal method for destroying a renderer.
void skipToNextCloseBrace(DataStreamPtr &chunk)
Internal script parsing method.
MapIterator< ParticleSystemRendererFactoryMap > ParticleRendererFactoryIterator
ParticleSystem * createTemplate(const String &name, const String &resourceGroup)
Create a new particle system template.
MapIterator< ParticleAffectorFactoryMap > ParticleAffectorFactoryIterator
Real getLoadingOrder(void) const
Gets the relative loading order of scripts of this type.
ParticleSystem * getTemplate(const String &name)
Retrieves a particle system template for possible modification.
ParticleSystemRendererFactoryMap mRendererFactories
Map of renderer types to factories.
void _initialise(void)
Init method to be called by OGRE system.
MapIterator< ParticleEmitterFactoryMap > ParticleEmitterFactoryIterator
ParticleSystemRenderer * _createRenderer(const String &rendererType)
Internal method for creating a new renderer from a factory.
map< String, ParticleSystem * >::type ParticleTemplateMap
map< String, ParticleAffectorFactory * >::type ParticleAffectorFactoryMap
ParticleEmitterFactoryMap mEmitterFactories
Factories for named emitter types (can be extended using plugins)
Abstract class definition of a factory object for ParticleSystemRenderer.
Abstract class defining the interface required to be implemented by classes which provide rendering c...
Class defining particle system based special effects.
Abstract class defining the interface used by classes which wish to perform script loading to define ...
Template class for creating single-instance global classes.
vector< String >::type StringVector
map< String, String >::type NameValuePairList
Name / value parameter pair (first = name, second = value)
float Real
Software floating point type.