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