1 #ifndef ELECTRIC_EXPLOSION_EFFECT_H 2 #define ELECTRIC_EXPLOSION_EFFECT_H 3 4 #include "spaceObject.h" 5 #include "glObjects.h" 6 7 class ElectricExplosionEffect : public SpaceObject, public Updatable 8 { 9 constexpr static float maxLifetime = 4.0; 10 constexpr static int particleCount = 1000; 11 12 float lifetime; 13 float size; 14 sf::Vector3f particleDirections[particleCount]; 15 bool on_radar; 16 17 #if FEATURE_3D_RENDERING 18 // Fit elements in a uint8 - at 4 vertices per quad, that's (256 / 4 =) 64 quads. 19 static constexpr size_t max_quad_count = 64; 20 static gl::Buffers<2> particlesBuffers; 21 #endif 22 public: 23 ElectricExplosionEffect(); 24 virtual ~ElectricExplosionEffect(); 25 26 #if FEATURE_3D_RENDERING 27 virtual void draw3DTransparent(); 28 #endif 29 virtual void drawOnRadar(sf::RenderTarget& window, sf::Vector2f position, float scale, float rotation, bool longRange); 30 virtual void update(float delta); 31 setSize(float size)32 void setSize(float size) { this->size = size; } setOnRadar(bool on_radar)33 void setOnRadar(bool on_radar) { this->on_radar = on_radar; } 34 }; 35 36 #endif//ELECTRIC_EXPLOSION_EFFECT_H 37