V-Gears 0
Free Final Fantasy VII engine.
ParticleSystemManager.h
Go to the documentation of this file.
1/*
2 * Copyright (C) 2022 The V-Gears Team
3 *
4 * This file is part of V-Gears
5 *
6 * V-Gears is free software: you can redistribute it and/or modify it under
7 * terms of the GNU General Public License as published by the Free Software
8 * Foundation, version 3.0 (GPLv3) of the License.
9 *
10 * V-Gears is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 */
15
16#pragma once
17
18#include <OgreSingleton.h>
19#include "ParticleEmitter.h"
22#include "ParticleSystem.h"
24#include "ParticleTechnique.h"
26
30class ParticleSystemManager: public Ogre::Singleton<ParticleSystemManager>{
31
32 public:
33
38
43
51
59 const Ogre::String& template_name
60 );
61
67 void ParticleSystemTemplateNames(std::vector<Ogre::String>& v);
68
76 const Ogre::String& name, const Ogre::String& template_name
77 );
78
84 void DestroyParticleSystem(ParticleSystem* particle_system);
85
92
100
106 void DestroyTechnique(ParticleTechnique* technique);
107
113 ParticleEmitter* CreateEmitter(const Ogre::String& emitter_type);
114
122
128 void DestroyEmitter(ParticleEmitter* emitter);
129
136 ParticleRenderer* CreateRenderer(const Ogre::String& renderer_type);
137
145
151 void DestroyRenderer(ParticleRenderer* renderer);
152
153 private:
154
161
168
169 private:
170
175
180
181 typedef std::map<Ogre::String, ParticleSystem*>
183
188
189 typedef std::map<Ogre::String, ParticleEmitterFactory*>
191
196
197 typedef std::map<Ogre::String, ParticleRendererFactory*>
199
204};
205
Definition: ParticleEmitterFactory.h:9
A particle emitter.
Definition: ParticleEmitter.h:27
A particle renderer factory.
Definition: ParticleRendererFactory.h:23
A particle renderer.
Definition: ParticleRenderer.h:28
A particle system factory.
Definition: ParticleSystemFactory.h:23
The particle system manager.
Definition: ParticleSystemManager.h:30
void DestroyTechnique(ParticleTechnique *technique)
Destroys a technique.
Definition: ParticleSystemManager.cpp:116
ParticleSystemTranslatorManager * translator_manager_
The translator manager.
Definition: ParticleSystemManager.h:179
ParticleSystemTemplateMap particle_system_templates_
The particle system template map.
Definition: ParticleSystemManager.h:187
void AddEmitterFactory(ParticleEmitterFactory *factory)
Adds a new {.
Definition: ParticleSystemManager.cpp:187
void DestroyEmitter(ParticleEmitter *emitter)
Destroys a particle emitter.
Definition: ParticleSystemManager.cpp:141
ParticleSystem * GetParticleSystemTemplate(const Ogre::String &template_name)
Retrieves a particle system template.
Definition: ParticleSystemManager.cpp:74
ParticleSystem * CreateParticleSystemTemplate(const Ogre::String &name)
Creates a particle system template.
Definition: ParticleSystemManager.cpp:60
ParticleRenderer * CloneRenderer(ParticleRenderer *renderer)
Duplicates a renderer.
Definition: ParticleSystemManager.cpp:167
ParticleTechnique * CloneTechnique(ParticleTechnique *technique)
Duplicates a technique.
Definition: ParticleSystemManager.cpp:109
RendererFactoryMap renderer_factories_
List of renderer factories.
Definition: ParticleSystemManager.h:203
ParticleEmitter * CloneEmitter(ParticleEmitter *emitter)
Duplicates a particle emitter.
Definition: ParticleSystemManager.cpp:134
std::map< Ogre::String, ParticleRendererFactory * > RendererFactoryMap
Definition: ParticleSystemManager.h:198
ParticleTechnique * CreateTechnique()
Creates a new technique.
Definition: ParticleSystemManager.cpp:103
void DestroyParticleSystem(ParticleSystem *particle_system)
Destroys a particle system.
Definition: ParticleSystemManager.cpp:99
ParticleSystem * CreateParticleSystem(const Ogre::String &name, const Ogre::String &template_name)
Creates a particle system.
Definition: ParticleSystemManager.cpp:86
std::map< Ogre::String, ParticleSystem * > ParticleSystemTemplateMap
Definition: ParticleSystemManager.h:182
void AddRendererFactory(ParticleRendererFactory *factory)
Adds a new {.
Definition: ParticleSystemManager.cpp:195
ParticleSystemManager()
Constructor.
Definition: ParticleSystemManager.cpp:28
void ParticleSystemTemplateNames(std::vector< Ogre::String > &v)
Gets all template names.
Definition: ParticleSystemManager.cpp:80
ParticleSystemFactory * particle_system_factory_
The particle system factory.
Definition: ParticleSystemManager.h:174
ParticleEmitter * CreateEmitter(const Ogre::String &emitter_type)
Creates a new particle emitter.
Definition: ParticleSystemManager.cpp:121
ParticleRenderer * CreateRenderer(const Ogre::String &renderer_type)
Creates a new particle renderer.
Definition: ParticleSystemManager.cpp:154
void DestroyRenderer(ParticleRenderer *renderer)
Destroys a renderer.
Definition: ParticleSystemManager.cpp:174
~ParticleSystemManager()
Constructor.
Definition: ParticleSystemManager.cpp:38
EmitterFactoryMap emitter_factories_
List of particle emitter factories.
Definition: ParticleSystemManager.h:195
std::map< Ogre::String, ParticleEmitterFactory * > EmitterFactoryMap
Definition: ParticleSystemManager.h:190
The particle system translator manager.
Definition: ParticleSystemTranslatorManager.h:29
A particle system.
Definition: ParticleSystem.h:26
A particle technique.
Definition: ParticleTechnique.h:28
Ogre::String String
Definition: TypeDefine.h:37