www.pudn.com > 2DGameAnimS60C_v1_0.zip > ParticleSystem.h


//////////////////////////////////////////////////////////////////////// 
// 
// ParticleSystem.h 
// 
// Copyright (c) 2003 Nokia Mobile Phones Ltd.  All rights reserved. 
// 
//////////////////////////////////////////////////////////////////////// 
 
#ifndef __PARTICLESYSTEM_H 
#define __PARTICLESYSTEM_H 
 
#include  
 
//////////////////////////////////////////////////////////////////////// 
 
class CBaseAnim; 
 
//////////////////////////////////////////////////////////////////////// 
 
class TVectorFP 
	{ 
public: 
	TVectorFP(); 
	TVectorFP(const TPoint& aPoint); 
 
	TPoint ScaleToPoint(TInt aFactor) const; 
	 
public: 
	TInt iX; 
	TInt iY; 
	}; 
 
////////////////////////////////////////////////////////// 
 
class TParticle 
	{ 
public: 
 
	TParticle(); 
	void Reset(); 
	void Start(TInt iVirtualFrameNum,TInt iDeltaVFN,TInt iMaxVFN,TPoint iPosition,TPoint iVelocity,TInt iDragRatio); 
	TBool IsActive() const; 
 
	void Simulate(); 
	void Render(CBaseAnim& aAnim, const TPoint& aOrigin,const TRect& aScreenRect, CFbsBitGc* aCallerGc) const; 
 
private: 
 
	enum 
	{ 
		dragRatioDownshift = 8, 
	}; 
 
	TInt iVirtualFrameNum; 
	TInt iDeltaVFN; 
	TInt iMaxVFN; 
	TPoint iPosition; 
	TPoint iVelocity; 
	TInt iDragRatio; 
	}; 
 
//////////////////////////////////////////////////////////////////////// 
 
class CParticleSystem : public CBase 
	{ 
public: 
	static CParticleSystem* NewL(TInt aMaxParticles,CBaseAnim& aAnim); 
	~CParticleSystem(); 
 
	void Reset(); 
	void Simulate(); 
	void Render(const TPoint& aOrigin,const TRect& aScreenRect,CFbsBitGc* aCallerGc) const; 
	void Generate(const TPoint& aWorldPos, const TVectorFP& aVector, const TPoint& aGeneratorVelocity,  
					const TInt aRadius, TInt aSpeed); 
 
protected: 
	CParticleSystem(CBaseAnim& aAnim); 
	void ConstructL(TInt aMaxParticles); 
 
protected: 
	TInt64 iSeed; 
	TInt iMaxParticles; 
	TParticle * iParticles; 
	TInt iNextParticleIndex; 
	CBaseAnim& iAnim; 
	}; 
 
//////////////////////////////////////////////////////////////////////// 
 
#endif