diff options
Diffstat (limited to 'game/client/particles_attractor.cpp')
| -rw-r--r-- | game/client/particles_attractor.cpp | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/game/client/particles_attractor.cpp b/game/client/particles_attractor.cpp new file mode 100644 index 0000000..3b52fb5 --- /dev/null +++ b/game/client/particles_attractor.cpp @@ -0,0 +1,73 @@ +//========= Copyright 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.f, 1024.f ); + 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; +} |