ParticleRendererFactory.h 760 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. #ifndef PARTICLE_RENDERER_FACTORY_H
  2. #define PARTICLE_RENDERER_FACTORY_H
  3. #include "ParticleRenderer.h"
  4. class ParticleRendererFactory
  5. {
  6. public:
  7. ParticleRendererFactory(){};
  8. virtual ~ParticleRendererFactory(){};
  9. virtual Ogre::String GetRendererType() const = 0;
  10. virtual ParticleRenderer* CreateRenderer() = 0;
  11. void DestroyRenderer (ParticleRenderer* renderer)
  12. {
  13. if (renderer != NULL)
  14. {
  15. delete renderer;
  16. }
  17. };
  18. protected:
  19. template <class T>
  20. ParticleRenderer* _createRenderer()
  21. {
  22. ParticleRenderer* particle_renderer = new T();
  23. particle_renderer->SetRendererType(GetRendererType());
  24. return particle_renderer;
  25. };
  26. };
  27. #endif // PARTICLE_RENDERER_FACTORY_H