summaryrefslogtreecommitdiff
path: root/Runtime/Filters/Particles/EllipsoidParticleEmitter.h
blob: 8a93dda5fee8d54a48eef772dbc47f7ec4ea99db (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
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