ParticleEmitterFactory.h 736 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef PARTICLE_EMITTER_FACTORY_H
  2. #define PARTICLE_EMITTER_FACTORY_H
  3. #include "ParticleEmitter.h"
  4. class ParticleEmitterFactory
  5. {
  6. public:
  7. ParticleEmitterFactory(){};
  8. virtual ~ParticleEmitterFactory(){};
  9. virtual Ogre::String GetEmitterType() const = 0;
  10. virtual ParticleEmitter* CreateEmitter() = 0;
  11. void DestroyEmitter(ParticleEmitter* emitter)
  12. {
  13. if (emitter != NULL)
  14. {
  15. delete emitter;
  16. }
  17. };
  18. protected:
  19. template <class T>
  20. ParticleEmitter* CreateEmitter_()
  21. {
  22. ParticleEmitter* particle_emitter = new T();
  23. particle_emitter->SetEmitterType(GetEmitterType());
  24. return particle_emitter;
  25. };
  26. };
  27. #endif // PARTICLE_EMITTER_FACTORY_H