#pragma once #include #include #include #include "Emitter.hpp" class Texture; class Assets; class Camera; class MainBatch; class Level; struct GraphicsSettings; class ParticlesRenderer { const Level& level; const Assets& assets; const GraphicsSettings* settings; std::unordered_map> particles; std::vector> emitters; std::unique_ptr batch; void renderParticles(const Camera& camera, float delta); public: ParticlesRenderer( const Assets& assets, const Level& level, const GraphicsSettings* settings ); ~ParticlesRenderer(); void render(const Camera& camera, float delta); void add(std::unique_ptr emitter); static size_t visibleParticles; static size_t aliveEmitters; };