60 lines
1.2 KiB
C++
60 lines
1.2 KiB
C++
#pragma once
|
|
|
|
struct SParticleVertex
|
|
{
|
|
D3DXVECTOR3 v3Pos;
|
|
float u, v;
|
|
};
|
|
|
|
struct BlurVertex
|
|
{
|
|
D3DXVECTOR3 pos;
|
|
FLOAT rhw;
|
|
DWORD color;
|
|
FLOAT tu, tv;
|
|
|
|
static const DWORD FVF;
|
|
|
|
BlurVertex(D3DXVECTOR3 p, float w,DWORD c,float u,float v):pos(p),rhw(w),color(c),tu(u),tv(v) {}
|
|
~BlurVertex(){};
|
|
};
|
|
|
|
class CSnowParticle
|
|
{
|
|
public:
|
|
CSnowParticle();
|
|
~CSnowParticle();
|
|
|
|
static CSnowParticle * New();
|
|
static void Delete(CSnowParticle * pSnowParticle);
|
|
static void DestroyPool();
|
|
|
|
void Init(const D3DXVECTOR3 & c_rv3Pos);
|
|
|
|
void SetCameraVertex(const D3DXVECTOR3 & rv3Up, const D3DXVECTOR3 & rv3Cross);
|
|
bool IsActivate();
|
|
|
|
void Update(float fElapsedTime, const D3DXVECTOR3 & c_rv3Pos);
|
|
void GetVerticies(SParticleVertex & rv3Vertex1, SParticleVertex & rv3Vertex2,
|
|
SParticleVertex & rv3Vertex3, SParticleVertex & rv3Vertex4);
|
|
|
|
protected:
|
|
bool m_bActivate;
|
|
bool m_bChangedSize;
|
|
float m_fHalfWidth;
|
|
float m_fHalfHeight;
|
|
|
|
D3DXVECTOR3 m_v3Velocity;
|
|
D3DXVECTOR3 m_v3Position;
|
|
|
|
D3DXVECTOR3 m_v3Up;
|
|
D3DXVECTOR3 m_v3Cross;
|
|
|
|
float m_fPeriod;
|
|
float m_fcurRadian;
|
|
float m_fAmplitude;
|
|
|
|
public:
|
|
static std::vector<CSnowParticle*> ms_kVct_SnowParticlePool;
|
|
};
|