aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/particle/je_particle_emitter.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-24 08:20:13 +0800
committerchai <chaifix@163.com>2018-10-24 08:20:13 +0800
commit280c39c65f47b4d1395d0dfe583a67a058804a27 (patch)
treee03b8699abed3fdaf8e3a2d2490b08f1ca3702dd /src/libjin/Graphics/particle/je_particle_emitter.h
parentd74e03063095d43c654fa52c3868f7ef8fce69f1 (diff)
*粒子系统
Diffstat (limited to 'src/libjin/Graphics/particle/je_particle_emitter.h')
-rw-r--r--src/libjin/Graphics/particle/je_particle_emitter.h64
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();
///
///