aboutsummaryrefslogtreecommitdiff
path: root/src/libjin/Graphics/particles/je_particle_emitter.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/libjin/Graphics/particles/je_particle_emitter.h')
-rw-r--r--src/libjin/Graphics/particles/je_particle_emitter.h62
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