From 15740faf9fe9fe4be08965098bbf2947e096aeeb Mon Sep 17 00:00:00 2001 From: chai Date: Wed, 14 Aug 2019 22:50:43 +0800 Subject: +Unity Runtime code --- .../Filters/Particles/EllipsoidParticleEmitter.h | 35 ++++++++++++++++++++++ 1 file changed, 35 insertions(+) create mode 100644 Runtime/Filters/Particles/EllipsoidParticleEmitter.h (limited to 'Runtime/Filters/Particles/EllipsoidParticleEmitter.h') 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 -- cgit v1.1-26-g67d0