aboutsummaryrefslogtreecommitdiff
path: root/sp/src/game/client/particles_attractor.cpp
blob: 3b52fb58f7721f164e8eefd91f7b4d379d038417 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose: 
//
//=============================================================================//

#include "cbase.h"
#include "particles_attractor.h"

#include "tier0/memdbgon.h"

//-----------------------------------------------------------------------------
// Purpose: 
// Input  : &center - 
//			"attractor" - 
// Output : CParticleAttractor
//-----------------------------------------------------------------------------
CParticleAttractor *CParticleAttractor::Create( const Vector &center, 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;
}