⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 particlesystem.h

📁 这是一款游戏中的粒子系统
💻 H
字号:
#pragma once
#include "BaseHeader.h"
#include "Camera.h"
#ifndef FILESIZE
#define FILESIZE 100
#endif
#ifndef Error
#define Error  "error"
#endif

#include "CenterForceLogic.h"
#include "BoxCreator.h"
#include "AxisForceLogic.h"

class CParticleEmitter;


class CParticleSystem
{
public:
	struct EmitParameter{
        string          name;     //粒子池名称
        long            productPS;//产生频率
		D3DXVECTOR3     relativePos;//相对位置
		D3DCOLOR        color;      //颜色
        D3DCOLOR        colorVar;
		float           life;       //生命周期
		float           lifeVar;
		float           size;        //粒子大小
		float           sizeVar;
		D3DXVECTOR3     speedDir;    //速度方向
		D3DXVECTOR3     speedDirVar;
		string          texture;
		int             maxnumber;
		float           speed;//标量,没有存储在文件中,只是在中间变化起作用
	};

public:
	CParticleSystem(LPDIRECT3DDEVICE9 device);
	virtual	~CParticleSystem();
public:
	typedef	map< string , CParticleEmitter* >	EmitterMap;
	typedef	vector<EmitParameter> ParameterVector;

	EmitterMap			m_EmitterMap;
	ParameterVector     m_ParameterVector;

	LPDIRECT3DDEVICE9   m_pDevice;
	/** 粒子系统中心位置*/
	D3DXVECTOR3			m_vecPosition;

	RECT                m_renderRect;
	D3DXVECTOR3         m_look;
	D3DXVECTOR3         m_up;
	D3DXVECTOR3         m_cameraDirection;
public:
	void SetPosition( const D3DXVECTOR3& pos );
	D3DXVECTOR3&	GetPosition();
	virtual	CParticleEmitter*	PushEmitter( const string& name , long maxparticle , long emit_ps , float spd , float size , D3DCOLOR clr );
	virtual	CParticleEmitter*	GetEmitter( const string& name );
	virtual void SetRenderRect(RECT rect);
	virtual RECT GetRenderRect();
	virtual	long        GetEmitterNumber();
	virtual	void        RemoveEmitter( const string& name );
	virtual	void        RemoveEmitter( CParticleEmitter* emit );
	virtual	void		Initialize();
	virtual	void		Update(float fElapsed);
	virtual	void		Render(CCamera *camera);
	virtual	void		Destroy();
	virtual	void		SetActive( bool act );
	virtual	bool		GetActive();
	virtual void        SetEmitParameter(CParticleEmitter *emit,EmitParameter *parameter);

	virtual void        Read(char* filename,char* section,char* property,char *value);
	virtual void        Write(char *filename,char*section,char* property,char* value);

	virtual bool        InportConfigFile(char *filename);
	virtual bool        ExportConfigFile(char *filename);
};

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -