From 42421575d2e17b5c57ff0034c037b651bd6d1119 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 25 Nov 2018 00:10:10 +0800 Subject: =?UTF-8?q?*=E7=B2=92=E5=AD=90=E7=B3=BB=E7=BB=9F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/libjin/graphics/particles/je_particle_system.h | 61 +++++++++++++++++----- 1 file changed, 49 insertions(+), 12 deletions(-) (limited to 'src/libjin/graphics/particles/je_particle_system.h') 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& floor, const Math::Vector2& ceil); + void setEmitPosition(const Math::Vector2& position); + + ////////////////////////////////////////////////////////////////////////////////////////////////// + // Particle Emitter modification. + ////////////////////////////////////////////////////////////////////////////////////////////////// + + void setParticleLife(float floor, float ceil); + void setParticleLife(float time); + + void setParticleLinearAccelaration(Math::Vector2 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; @@ -106,11 +148,6 @@ namespace JinEngine /// ParticleSystemDef mDef; - /// - /// Sprite to be drawn. - /// - const Sprite* mSprite; - /// /// Particle emitter. /// -- cgit v1.1-26-g67d0