📄 axisforcelogic.cpp
字号:
#include "StdAfx.h"
#include ".\axisforcelogic.h"
#include "Particle.h"
#include "ParticleEmitter.h"
//////////////////////////////////////////////////////////////////////////
/** 轴向外力扰动子
* 说明请看对应头文件
*/
//////////////////////////////////////////////////////////////////////////
//------------------------------------------------------------
CAxisForceLogic::CAxisForceLogic( CParticleEmitter* parent ) : CParticleAffector(parent)
{
type=Axis;
m_strTypename = "NF3D内置的轴向外力扰动子";
m_strDesc = "使用m_Vec3Array的Slot:0,分别表示xyz三个方向上的初始外力。\n\
使用m_FloatArray的Slot:0,表示随xyz远近而导致的外力的衰减。";
DefaultValue();
}
//------------------------------------------------------------
CAxisForceLogic::~CAxisForceLogic()
{
}
void CAxisForceLogic::DefaultValue()
{
if ( m_Vec3Array.empty() )
{
// 默认是重力影响,也就是-y方向的恒定加速度
m_Vec3Array.push_back( D3DXVECTOR3( 0 , -1 , 0 ) );
}
else
{ SetParamVector( 0 , D3DXVECTOR3( 0 , -1 , 0 ) ); }
if ( m_FloatArray.empty() )
{
// 默认无衰减
m_FloatArray.push_back( 0.0f );
}
else
{ SetParamFloat( 0 , 0.0f ); }
}
//------------------------------------------------------------
bool CAxisForceLogic::Logic( CParticle* par , float ref )
{
// 对粒子三个轴向的速度分别施加影响,这个影响将考虑到粒子与粒子初始位置
par->m_vecVelocity += (m_Vec3Array[0]*ref);
return true;
}
//------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -