aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/particle/je_particle.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics/particle/je_particle.h')
-rw-r--r--src/libjin/Graphics/particle/je_particle.h66
1 files changed, 47 insertions, 19 deletions
diff --git a/src/libjin/Graphics/particle/je_particle.h b/src/libjin/Graphics/particle/je_particle.h
index d32d9fe..474e15b 100644
--- a/src/libjin/Graphics/particle/je_particle.h
+++ b/src/libjin/Graphics/particle/je_particle.h
@@ -8,33 +8,61 @@ namespace JinEngine
namespace Graphics
{
+ class ParticleSystem;
+
///
- /// Single particle. Grab from love2d.
+ /// A single particle contains various properties of particle, such as position, accelaration, color and
+ /// other attributes changed over time.
///
- class Particle
+ struct Particle
{
- public:
+ ///
+ /// Whole life time.
+ ///
+ float lifeTime = 0.0f;
+
+ ///
+ /// Current life time.
+ ///
+ float life = 0.0f;
+
+ ///
+ /// Current position.
+ ///
+ float position[2] = {0,0};
+
+ ///
+ /// Emitte direction.
+ ///
+ float direction = 0;
+
+ Math::Vector2<float> speed;
+ Math::Vector2<float> linearAcceleration;
+ float radialAcceleration = 0;
+ float tangetialAcceleration = 0;
- private:
- float mLifeTime;
- float mLife;
- float mPosition[2];
- float mDirection;
+ ///
+ /// Size over lifetime.
+ ///
+ float size = 1;
+ float sizeBegin = 1;
+ float sizeEnd = 1;
- Math::Vector2<float> mSpeed;
- float mGravity;
- float mRadialAcceleration;
- float mTangetialAcceleration;
+ float rotation = 0;
+ float angle = 0;
- float mSize;
- float mSizeStart;
- float mSizeEnd;
+ ///
+ /// Color over lifetime.
+ ///
+ Color color = Color::WHITE;
+ Color colorStart = Color::WHITE;
+ Color colorEnd = Color::WHITE;
- float mRotation;
- float mSpinStart;
- float mSpinEnd;
+ ///
+ /// Is particle still alive? Alive is equivalent to NOT available in particle pool.
+ ///
+ bool alive = false;
- float color[4];
};
} // namespace Graphics