📄 particleaffector.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 + -