summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/ParticleSystem/Modules/UVModule.h
blob: 5ed9e7f9b6ba3258d57f656d587237836f91fc96 (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
36
#ifndef SHURIKENMODULEUV_H
#define SHURIKENMODULEUV_H

#include "ParticleSystemModule.h"
#include "Runtime/Graphics/ParticleSystem/PolynomialCurve.h"

struct ParticleSystemParticles;

class UVModule : public ParticleSystemModule
{
public:
	DECLARE_MODULE (UVModule)	
	UVModule ();

	void Update (const ParticleSystemParticles& ps, float* tempSheetIndex, size_t fromIndex, size_t toIndex);
	void CheckConsistency ();

	inline MinMaxCurve& GetCurve() { return m_Curve; }

	void GetNumTiles(int& uvTilesX, int& uvTilesY) const;
	
	template<class TransferFunction>
	void Transfer (TransferFunction& transfer);
	
private:
	enum { kWholeSheet, kSingleRow, kNumAnimationTypes };
	
	MinMaxCurve m_Curve;
	int m_TilesX, m_TilesY;
	int m_AnimationType;
	int m_RowIndex;
	float m_Cycles;
	bool m_RandomRow;
};

#endif // SHURIKENMODULEUV_H