diff options
author | chai <chaifix@163.com> | 2018-11-18 22:32:55 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-11-18 22:32:55 +0800 |
commit | fc7b4579e49aaeecc81919e247e03f68bd5abfd4 (patch) | |
tree | 6547b8c7d3632591358267d06006eddc53216105 /src/libjin/Graphics/particles/je_particle_emitter.h | |
parent | 3905924fc35f92e5092576c3f6e8fc5db7588cde (diff) |
*粒子系统
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 |