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

📄 particleaffector.h

📁 这是一款游戏中的粒子系统
💻 H
字号:
#pragma once

#include "BaseHeader.h"
#include "Particle.h"
class CParticleEmitter;
//影响器类
class CParticleAffector
{
protected:
	typedef	vector<string>		StringVector;
	typedef	vector<D3DXVECTOR3>	Vec3Vector;
	typedef	vector<float>		FloatVector;
	typedef	vector<int>			IntVector;
public:

	CParticleAffector( CParticleEmitter* parent );
	virtual	~CParticleAffector();

public:
	D3DXVECTOR3		s_vecFault;
	/** 类型名,各个具体子类指定 */
	string					m_strTypename;
	/** 描述,各个具体子类指定 */
	string					m_strDesc;

	/** 可配对的Particle类型,各个子类具体指定 */
	string					m_strParticleType;
	/** 被挂接的粒子发射器,通过这个接口可以访问粒子发射器的一些变量 */
	CParticleEmitter*		m_pParentEmitter;
	/** 可能的附加配置 */
	Vec3Vector				m_Vec3Array;
	FloatVector				m_FloatArray;
	IntVector				m_IntArray;

	enum AffectType{Center,Axis,Box};
	AffectType type;
public:

	string&	GetTypename()	{ return m_strTypename; }

	float GetParamFloat( int idx )
	{
		if( idx >= (int)m_FloatArray.size() )
		{ return 0.0f; }
		return m_FloatArray[idx];
	}

	D3DXVECTOR3&GetParamVector( int idx )
	{
		if( idx >= (int)m_Vec3Array.size() )
		{ return s_vecFault; }
		return m_Vec3Array[idx];
	}

	int GetParamInt( int idx )
	{
		if( idx >= (int)m_IntArray.size() )
		{ return -1; }
		return m_IntArray[idx];
	}

	bool SetParamFloat( int idx , float set )
	{
		if( idx >=(int) m_FloatArray.size() )
		{ return false; }
		m_FloatArray[idx] = set;
		return true;
	}

	bool SetParamVector( int idx , const D3DXVECTOR3& set )
	{
		if( idx >= (int)m_Vec3Array.size() )
		{ return false; }
		m_Vec3Array[idx] = set;
		return true;
	}

	bool SetParamInt( int idx , int set )
	{
		if( idx >= (int)m_IntArray.size() )
		{ return false; }
		m_IntArray[idx] = set;
		return true;
	}

	float RangeRandom ( float fLow , float fHigh )
	{
		return ( fHigh - fLow ) * (float(rand()) / float(RAND_MAX)) + fLow;
	}

	AffectType GetType(){return type;}
public:

	virtual	bool			Create( CParticle* par ) = 0;
	virtual	bool			Logic( CParticle* par , float elapsed ) = 0;
	virtual	void			DefaultValue() = 0;
	virtual	void			Destroy() {}
};

⌨️ 快捷键说明

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