From fc7b4579e49aaeecc81919e247e03f68bd5abfd4 Mon Sep 17 00:00:00 2001 From: chai Date: Sun, 18 Nov 2018 22:32:55 +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 --- .../Graphics/particles/je_particle_emitter.h | 62 +++++++++++++++------- 1 file changed, 43 insertions(+), 19 deletions(-) (limited to 'src/libjin/Graphics/particles/je_particle_emitter.h') diff --git a/src/libjin/Graphics/particles/je_particle_emitter.h b/src/libjin/Graphics/particles/je_particle_emitter.h index 9200532..44bd1fb 100644 --- a/src/libjin/Graphics/particles/je_particle_emitter.h +++ b/src/libjin/Graphics/particles/je_particle_emitter.h @@ -16,29 +16,27 @@ namespace JinEngine struct PositionDef { bool enableRandom = false; - union - { + Struct(position, struct { - Math::Vector2 min; - Math::Vector2 max; + Math::Vector2 floor; + Math::Vector2 ceil; } random; Math::Vector2 position; - } position; + ); }; struct DirectionDef { bool enableRandom = false; - union - { + Struct(direction, struct { - float min = 0; - float max = 0; + float floor = 0; + float ceil = 0; } random; float direction = 0; - } direction; + ); }; /// @@ -47,25 +45,42 @@ namespace JinEngine struct EmitRateDef { bool enableRandom = false; - union - { + Struct(rate, struct { - float min = 1; - float max = 1; + float floor = 1; + float ceil = 1; } random; float rate = 1; - } rate; + ); + }; + + /// + /// Initial speed of particle. + /// + struct ForceDef + { + bool enableRandom = false; + Struct(force, + struct + { + float floor = 1; + float ceil = 1; + } random; + float force = 1; + ); }; /// /// Definition of particle emitter. /// - struct ParticleEmitterDef : public Temporary + struct ParticleEmitterDef { + EmitRateDef emitRateDef; ///< Emit rate. + PositionDef positionDef; ///< Emit position(relativily to the particle system center). DirectionDef directionDef; ///< Emit direction. - EmitRateDef emitRateDef; ///< Emit rate. + ForceDef forceDef; ///< Emit force. }; class ParticleSystem; @@ -90,10 +105,14 @@ namespace JinEngine /// /// /// - ParticleSystem& mParticleSystem; + ParticleSystem& mPS; + + const ParticleEmitterDef& mDef; + + const ParticleDef& mPDef; /// - /// Emit a particle according to emitter definition and particle definition, particle system should + /// Emit particle according to emitter definition and particle definition, particle system should /// assign particle value to the particle in particle pool, but not use this return particle. /// void emit(); @@ -103,6 +122,11 @@ namespace JinEngine /// float mTime; + /// + /// + /// + float mInterval; + }; } // namespace Particles -- cgit v1.1-26-g67d0