diff options
author | chai <chaifix@163.com> | 2018-10-24 08:20:13 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2018-10-24 08:20:13 +0800 |
commit | 280c39c65f47b4d1395d0dfe583a67a058804a27 (patch) | |
tree | e03b8699abed3fdaf8e3a2d2490b08f1ca3702dd /src/libjin/Graphics/particle/je_particle_emitter.h | |
parent | d74e03063095d43c654fa52c3868f7ef8fce69f1 (diff) |
*粒子系统
Diffstat (limited to 'src/libjin/Graphics/particle/je_particle_emitter.h')
-rw-r--r-- | src/libjin/Graphics/particle/je_particle_emitter.h | 64 |
1 files changed, 55 insertions, 9 deletions
diff --git a/src/libjin/Graphics/particle/je_particle_emitter.h b/src/libjin/Graphics/particle/je_particle_emitter.h index 95b7875..e700f16 100644 --- a/src/libjin/Graphics/particle/je_particle_emitter.h +++ b/src/libjin/Graphics/particle/je_particle_emitter.h @@ -11,29 +11,75 @@ namespace JinEngine namespace Graphics { + struct PositionDef + { + bool enableRandom = false; + union + { + struct + { + Math::Vector2<float> min; + Math::Vector2<float> max; + } random; + Math::Vector2<float> position; + } position; + }; + + struct DirectionDef + { + bool enableRandom = false; + union + { + struct + { + float min = 0; + float max = 0; + } random; + float direction = 0; + } direction; + }; + + struct EmitRateDef + { + bool enableRandom = false; + union + { + struct + { + float min = 1; + float max = 1; + } random; + float rate = 1; + } rate; + }; + /// /// Definition of particle emitter. /// struct ParticleEmitterDef : public Temporary { - Math::Vector2<float> position; - + PositionDef positionDef; ///< Emit position(relativily to the particle system center). + DirectionDef directionDef; ///< Emit direction. + EmitRateDef emitRateDef; ///< Emit rate. + /// + /// Particle definition. + /// + ParticleDef particleDef; ///< Particle definition. }; + /// + /// Emit a single particle. + /// class ParticleEmitter { public: ParticleEmitter(const ParticleEmitterDef& def); /// - /// Create new particle. - /// - Particle* emit(); - - /// - /// Emitter position. + /// Emit a particle, particle system should assign particle value to the particle in particle pool, + /// but not use this return particle. /// - Math::Vector2<float> mPosition; + Particle emit(); /// /// |