aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/graphics/particles/je_particle_system.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/graphics/particles/je_particle_system.h')
-rw-r--r--src/libjin/graphics/particles/je_particle_system.h61
1 files changed, 49 insertions, 12 deletions
diff --git a/src/libjin/graphics/particles/je_particle_system.h b/src/libjin/graphics/particles/je_particle_system.h
index 614ee7c..1a07588 100644
--- a/src/libjin/graphics/particles/je_particle_system.h
+++ b/src/libjin/graphics/particles/je_particle_system.h
@@ -33,7 +33,7 @@ namespace JinEngine
///
/// Particle emitter, handle all particles it emitts.
///
- class ParticleSystem : public IRenderable
+ class ParticleSystem : public IRenderable, public Game::GameObject
{
public:
///
@@ -59,16 +59,14 @@ namespace JinEngine
void render();
///
- /// Set sprite to render.
- ///
- /// @param sprite Sprite to render.
+ /// Set particle system position.
///
- void setSprite(const Sprite* sprite);
+ void setPosition(float x, float y);
///
- /// Set particle system position.
+ /// Set scale.
///
- void setPosition(float x, float y);
+ void setScale(float sx, float sy);
///
/// Pause particle spawn.
@@ -80,6 +78,50 @@ namespace JinEngine
///
void clear();
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ // Particle Emitter modification.
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+
+ void setEmitRate(float floor, float ceil);
+ void setEmitRate(float rate);
+
+ void setEmitForce(float floor, float ceil);
+ void setEmitForce(float force);
+
+ void setEmitDirection(float floor, float ceil);
+ void setEmitDirection(float dir);
+
+ void setEmitPosition(const Math::Vector2<float>& floor, const Math::Vector2<float>& ceil);
+ void setEmitPosition(const Math::Vector2<float>& position);
+
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+ // Particle Emitter modification.
+ //////////////////////////////////////////////////////////////////////////////////////////////////
+
+ void setParticleLife(float floor, float ceil);
+ void setParticleLife(float time);
+
+ void setParticleLinearAccelaration(Math::Vector2<float> ac);
+
+ void setParticleRadialAccelaration(float ra);
+
+ void setParticleAngularSpeed(float floor, float ceil);
+ void setParticleAngularSpeed(float speed);
+
+ void setParticleSpritesMode(SpriteMode mode);
+ void addParticleSprites(const Sprite* sprite);
+ void removeParticleSprite(uint i);
+
+ void enableParticleBlendAdditive(bool enable);
+
+ void setParticleScale(float scale);
+ void addParticleScalePoint(float scale, float t);
+ void removeParticleScalePoint(uint i);
+
+ void setParticleColor(Color color);
+ void addParticleColorPoint(Color color, float t);
+ void removeParticleColorPoint(uint i);
+
private:
friend class ParticleEmitter;
@@ -107,11 +149,6 @@ namespace JinEngine
ParticleSystemDef mDef;
///
- /// Sprite to be drawn.
- ///
- const Sprite* mSprite;
-
- ///
/// Particle emitter.
///
ParticleEmitter mEmitter;