diff options
Diffstat (limited to 'src/libjin/Graphics/particles/je_particle_emitter.h')
-rw-r--r-- | src/libjin/Graphics/particles/je_particle_emitter.h | 62 |
1 files changed, 43 insertions, 19 deletions
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<float> min; - Math::Vector2<float> max; + Math::Vector2<float> floor; + Math::Vector2<float> ceil; } random; Math::Vector2<float> 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 |