ParticleSystemManager.h 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. #ifndef PARTICLE_SYSTEM_MANAGER_H
  2. #define PARTICLE_SYSTEM_MANAGER_H
  3. #include <OgreSingleton.h>
  4. #include "ParticleEmitter.h"
  5. #include "ParticleEmitterFactory.h"
  6. #include "ParticleRendererFactory.h"
  7. #include "ParticleSystem.h"
  8. #include "ParticleSystemFactory.h"
  9. #include "ParticleTechnique.h"
  10. #include "ParticleSystemTranslatorManager.h"
  11. class ParticleSystemManager: public Ogre::Singleton<ParticleSystemManager>
  12. {
  13. public:
  14. ParticleSystemManager();
  15. ~ParticleSystemManager();
  16. // ParticleSystemTemplate
  17. ParticleSystem* CreateParticleSystemTemplate(const Ogre::String& name);
  18. ParticleSystem* GetParticleSystemTemplate(const Ogre::String& templateName);
  19. void ParticleSystemTemplateNames(std::vector<Ogre::String>& v);
  20. // ParticleSystem
  21. ParticleSystem* CreateParticleSystem(const Ogre::String& name, const Ogre::String& template_name);
  22. void DestroyParticleSystem(ParticleSystem* particle_system);
  23. // ParticleTechnique.
  24. ParticleTechnique* CreateTechnique();
  25. ParticleTechnique* CloneTechnique(ParticleTechnique* technique);
  26. void DestroyTechnique(ParticleTechnique* technique);
  27. // ParticleEmitter
  28. ParticleEmitter* CreateEmitter(const Ogre::String& emitter_type);
  29. ParticleEmitter* CloneEmitter(ParticleEmitter* emitter);
  30. void DestroyEmitter(ParticleEmitter* emitter);
  31. // ParticleRenderer
  32. ParticleRenderer* CreateRenderer(const Ogre::String& renderer_type);
  33. ParticleRenderer* CloneRenderer(ParticleRenderer* renderer);
  34. void DestroyRenderer(ParticleRenderer* renderer);
  35. private:
  36. // factories
  37. void AddEmitterFactory(ParticleEmitterFactory* factory);
  38. void AddRendererFactory(ParticleRendererFactory* factory);
  39. private:
  40. ParticleSystemFactory* m_ParticleSystemFactory;
  41. ParticleSystemTranslatorManager* m_TranslatorManager;
  42. // ParticleSystemTemplate
  43. typedef std::map<Ogre::String, ParticleSystem*> ParticleSystemTemplateMap;
  44. ParticleSystemTemplateMap m_ParticleSystemTemplates;
  45. // Emitter Factories
  46. typedef std::map<Ogre::String, ParticleEmitterFactory*> EmitterFactoryMap;
  47. EmitterFactoryMap m_EmitterFactories;
  48. // Renderer Factories
  49. typedef std::map<Ogre::String, ParticleRendererFactory*> RendererFactoryMap;
  50. RendererFactoryMap m_RendererFactories;
  51. };
  52. #endif // PARTICLE_SYSTEM_MANAGER_H