You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
2.4 KiB
73 lines
2.4 KiB
//========= Copyright © 1996-2005, Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
#include "particles_attractor.h" |
|
|
|
#include "tier0/memdbgon.h" |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : ¢er - |
|
// "attractor" - |
|
// Output : CParticleAttractor |
|
//----------------------------------------------------------------------------- |
|
CParticleAttractor *CParticleAttractor::Create( const Vector ¢er, const char *pDebugName ) |
|
{ |
|
CParticleAttractor *pSystem = new CParticleAttractor( pDebugName ); |
|
|
|
pSystem->SetAttractorOrigin( center ); |
|
|
|
return pSystem; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : *pParticle - |
|
// timeDelta - |
|
//----------------------------------------------------------------------------- |
|
void CParticleAttractor::UpdateVelocity( SimpleParticle *pParticle, float timeDelta ) |
|
{ |
|
float speed = VectorNormalize( pParticle->m_vecVelocity ); |
|
Vector offset; |
|
|
|
Vector dir = ( m_vecAttractorOrigin - pParticle->m_Pos ); |
|
VectorNormalize( dir ); |
|
|
|
speed = clamp( (speed+speed*0.2f), 0, 1024 ); |
|
pParticle->m_vecVelocity += dir * speed; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : *pParticle - |
|
// timeDelta - |
|
// Output : float |
|
//----------------------------------------------------------------------------- |
|
float CParticleAttractor::UpdateScale( const SimpleParticle *pParticle ) |
|
{ |
|
return ( ((float)pParticle->m_uchStartSize) * sin( M_PI * (pParticle->m_flLifetime / pParticle->m_flDieTime) ) ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : *pParticle - |
|
// timeDelta - |
|
// Output : float |
|
//----------------------------------------------------------------------------- |
|
float CParticleAttractor::UpdateAlpha( const SimpleParticle *pParticle ) |
|
{ |
|
return ( ((float)pParticle->m_uchStartAlpha/255.0f) * sin( M_PI * (pParticle->m_flLifetime / pParticle->m_flDieTime) ) ); |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
// Input : &origin - |
|
//----------------------------------------------------------------------------- |
|
void CParticleAttractor::SetAttractorOrigin( const Vector &origin ) |
|
{ |
|
m_vecAttractorOrigin = origin; |
|
}
|
|
|