diff options
Diffstat (limited to 'src/libjin/graphics/particles/je_particle_system.h')
-rw-r--r-- | src/libjin/graphics/particles/je_particle_system.h | 61 |
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; |