diff options
author | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
---|---|---|
committer | chai <chaifix@163.com> | 2019-08-14 22:50:43 +0800 |
commit | 15740faf9fe9fe4be08965098bbf2947e096aeeb (patch) | |
tree | a730ec236656cc8cab5b13f088adfaed6bb218fb /Runtime/Filters/Particles/EllipsoidParticleEmitter.h |
Diffstat (limited to 'Runtime/Filters/Particles/EllipsoidParticleEmitter.h')
-rw-r--r-- | Runtime/Filters/Particles/EllipsoidParticleEmitter.h | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/Runtime/Filters/Particles/EllipsoidParticleEmitter.h b/Runtime/Filters/Particles/EllipsoidParticleEmitter.h new file mode 100644 index 0000000..8a93dda --- /dev/null +++ b/Runtime/Filters/Particles/EllipsoidParticleEmitter.h @@ -0,0 +1,35 @@ +#ifndef ELLIPSOIDPARTICLEEMITTER_H +#define ELLIPSOIDPARTICLEEMITTER_H + +#include "ParticleEmitter.h" +#include "Runtime/Math/Vector3.h" +#include "ParticleStruct.h" + +class Matrix4x4f; + + + +class EllipsoidParticleEmitter : public ParticleEmitter +{ +public: + REGISTER_DERIVED_CLASS (EllipsoidParticleEmitter, ParticleEmitter) + DECLARE_OBJECT_SERIALIZE (EllipsoidParticleEmitter) + EllipsoidParticleEmitter (MemLabelId label, ObjectCreationMode mode); + + static void InitializeClass (); + static void CleanupClass (); + +private: + + void SetupParticle (Particle& p, const Vector3f& velocityOffset, const Matrix3x3f& rotation, float deltaTime); + virtual void SetupParticles (ParticleArray& particles, const Vector3f& velocityOffset, + const Matrix3x3f& rotation, int firstIndex); + +public: + Vector3f m_Ellipsoid; ///< Size of emission area + float m_MinEmitterRange;///< [0...1] relative range to maxEmitterSize where particles will not be spawned + // 0 means that a full ellipsoid will be filled with particles + // 1 means only the outline will be filled with particles +}; + +#endif |