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

📄 centerforcelogic.cpp

📁 这是一款游戏中的粒子系统
💻 CPP
字号:
#include "StdAfx.h"
#include ".\centerforcelogic.h"
#include "Particle.h"
#include "ParticleEmitter.h"


//////////////////////////////////////////////////////////////////////////
/** 向心外力扰动子
*	说明请看对应头文件
*/
//////////////////////////////////////////////////////////////////////////
//------------------------------------------------------------
CCenterForceLogic::CCenterForceLogic( CParticleEmitter* parent ) : CParticleAffector(parent)
{
	type=Center;
	m_strTypename = "NF3D内置的轴向外力扰动子";
	m_strDesc = "使用m_FloatArray的Slot:0,表示随离心力的大小,默认是0表示无任何离心力。\n\
		         使用m_FloatArray的Slot:1,表示开始影响的半径,默认是0表示从Emitter核心开始就开始影响。\n\
		         使用m_FloatArray的Slot:2,表示结束影响的半径,默认是0表示永无结束。\n\
		         使用m_FloatArray的Slot:3,表示随离心远近而导致的外力的衰减,默认是0表示无衰减。";
	DefaultValue();
}

//------------------------------------------------------------
CCenterForceLogic::~CCenterForceLogic()
{
}


//------------------------------------------------------------
void	CCenterForceLogic::DefaultValue()
{
	if ( m_FloatArray.empty() )
	{
		// 默认是无影响
		m_FloatArray.push_back( 0.0f );
		// 默认是核心开始
		m_FloatArray.push_back( 0.0f );
		// 默认是永无结束
		m_FloatArray.push_back( 0.0f );
		// 默认无衰减
		m_FloatArray.push_back( 0.0f );
	}
	else
	{
		SetParamFloat( 0 , 0.0f );
		SetParamFloat( 1 , 0.0f );
		SetParamFloat( 2 , 0.0f );
		SetParamFloat( 3 , 0.0f );
	}
}

//------------------------------------------------------------
bool	CCenterForceLogic::Logic( CParticle* par , float ref )
{
	// 对粒子三个轴向的速度分别施加影响,这个影响将考虑到Emitter位置
	// 算出外力方向和长度
	D3DXVECTOR3 force = par->m_vecPosition - m_pParentEmitter->GetAbsPosition();
	float dist = D3DXVec3Length( &force );
	// 长度是否合适
	if ( dist >= m_FloatArray[1] && ( m_FloatArray[2] == 0.0f || dist < m_FloatArray[2] ) )
	{
		// 算出外力
		D3DXVec3Normalize( &force , &force );
		force *= m_FloatArray[0];
		// 影响速度
		par->m_vecVelocity += ( force * ref );
	}
	return true;
}
//------------------------------------------------------------

⌨️ 快捷键说明

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