diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/client/hl2/c_func_tankmortar.cpp | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/client/hl2/c_func_tankmortar.cpp')
| -rw-r--r-- | mp/src/game/client/hl2/c_func_tankmortar.cpp | 498 |
1 files changed, 249 insertions, 249 deletions
diff --git a/mp/src/game/client/hl2/c_func_tankmortar.cpp b/mp/src/game/client/hl2/c_func_tankmortar.cpp index 5d23995d..09987aaf 100644 --- a/mp/src/game/client/hl2/c_func_tankmortar.cpp +++ b/mp/src/game/client/hl2/c_func_tankmortar.cpp @@ -1,249 +1,249 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================//
-
-#include "cbase.h"
-#include "fx_quad.h"
-#include "fx.h"
-
-class C_MortarShell : public C_BaseEntity
-{
-public:
-
- DECLARE_CLASS( C_MortarShell, C_BaseEntity );
- DECLARE_CLIENTCLASS();
-
- void OnDataChanged( DataUpdateType_t updateType );
- int DrawModel( int flags );
-
- RenderGroup_t GetRenderGroup( void ) { return RENDER_GROUP_TRANSLUCENT_ENTITY; }
-
-private:
-
- void AddRisingParticles( float flPerc );
- void AddExplodingParticles( float flPerc );
-
- inline float GetStartPerc( void );
- inline float GetEndPerc( void );
-
- CSmartPtr<CSimpleEmitter> m_pEmitter;
- TimedEvent m_ParticleEvent;
-
- float m_flLifespan;
- float m_flRadius;
- float m_flStarttime;
- Vector m_vecSurfaceNormal;
-};
-
-IMPLEMENT_CLIENTCLASS_DT( C_MortarShell, DT_MortarShell, CMortarShell )
- RecvPropFloat( RECVINFO( m_flLifespan ) ),
- RecvPropFloat( RECVINFO( m_flRadius ) ),
- RecvPropVector( RECVINFO( m_vecSurfaceNormal ) ),
-END_RECV_TABLE()
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : updateType -
-//-----------------------------------------------------------------------------
-void C_MortarShell::OnDataChanged( DataUpdateType_t updateType )
-{
- BaseClass::OnDataChanged( updateType );
-
- if ( updateType == DATA_UPDATE_CREATED )
- {
- m_flStarttime = gpGlobals->curtime;
- AddToLeafSystem( RENDER_GROUP_TRANSLUCENT_ENTITY );
-
- m_pEmitter = CSimpleEmitter::Create( "C_EntityDissolve" );
- m_pEmitter->SetSortOrigin( GetAbsOrigin() );
-
- m_ParticleEvent.Init( 128 );
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : flPerc -
-//-----------------------------------------------------------------------------
-void C_MortarShell::AddRisingParticles( float flPerc )
-{
- SimpleParticle *sParticle;
-
- Vector offset;
- float radius = m_flRadius * 0.25f * flPerc;
-
- float val = RemapValClamped( gpGlobals->curtime, m_flStarttime, m_flStarttime + m_flLifespan, 0.0f, 1.0f );
-
- float flCur = gpGlobals->frametime;
-
- // Anime ground effects
- while ( m_ParticleEvent.NextEvent( flCur ) )
- {
- offset.x = random->RandomFloat( -radius, radius );
- offset.y = random->RandomFloat( -radius, radius );
- offset.z = random->RandomFloat( -8.0f, 8.0f );
-
- offset += GetAbsOrigin();
-
- sParticle = (SimpleParticle *) m_pEmitter->AddParticle( sizeof(SimpleParticle), m_pEmitter->GetPMaterial( "effects/spark" ), offset );
-
- if ( sParticle == NULL )
- return;
-
- sParticle->m_vecVelocity = Vector( Helper_RandomFloat( -4.0f, 4.0f ), Helper_RandomFloat( -4.0f, 4.0f ), Helper_RandomFloat( 32.0f, 256.0f ) * Bias( val, 0.25f ) );
-
- sParticle->m_uchStartSize = random->RandomFloat( 4, 8 ) * flPerc;
-
- sParticle->m_flDieTime = random->RandomFloat( 0.5f, 1.0f );
-
- sParticle->m_flLifetime = 0.0f;
-
- sParticle->m_flRoll = Helper_RandomInt( 0, 360 );
-
- float alpha = 255 * flPerc;
-
- sParticle->m_flRollDelta = Helper_RandomFloat( -8.0f * flPerc, 8.0f * flPerc );
- sParticle->m_uchColor[0] = alpha;
- sParticle->m_uchColor[1] = alpha;
- sParticle->m_uchColor[2] = alpha;
- sParticle->m_uchStartAlpha = alpha;
- sParticle->m_uchEndAlpha = 0;
- sParticle->m_uchEndSize = 0;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : flPerc -
-//-----------------------------------------------------------------------------
-void C_MortarShell::AddExplodingParticles( float flPerc )
-{
- SimpleParticle *sParticle;
-
- Vector offset;
- float radius = 48.0f * flPerc;
-
- float flCur = gpGlobals->frametime;
-
- // Anime ground effects
- while ( m_ParticleEvent.NextEvent( flCur ) )
- {
- offset.x = random->RandomFloat( -radius, radius );
- offset.y = random->RandomFloat( -radius, radius );
- offset.z = random->RandomFloat( -8.0f, 8.0f );
-
- offset += GetAbsOrigin();
-
- sParticle = (SimpleParticle *) m_pEmitter->AddParticle( sizeof(SimpleParticle), m_pEmitter->GetPMaterial( "effects/spark" ), offset );
-
- if ( sParticle == NULL )
- return;
-
- sParticle->m_vecVelocity = RandomVector( -1.0f, 1.0f ) + Vector( 0, 0, 1 );
- sParticle->m_vecVelocity *= ( 750.0f * flPerc );
-
- sParticle->m_uchStartSize = random->RandomFloat( 2, 4 ) * flPerc;
-
- sParticle->m_flDieTime = random->RandomFloat( 0.25f, 0.5f );
-
- sParticle->m_flLifetime = 0.0f;
-
- sParticle->m_flRoll = Helper_RandomInt( 0, 360 );
-
- float alpha = 255 * flPerc;
-
- sParticle->m_flRollDelta = Helper_RandomFloat( -8.0f * flPerc, 8.0f * flPerc );
- sParticle->m_uchColor[0] = alpha;
- sParticle->m_uchColor[1] = alpha;
- sParticle->m_uchColor[2] = alpha;
- sParticle->m_uchStartAlpha = alpha;
- sParticle->m_uchEndAlpha = 0;
- sParticle->m_uchEndSize = 0;
- }
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Output : inline float
-//-----------------------------------------------------------------------------
-inline float C_MortarShell::GetStartPerc( void )
-{
- float val = RemapValClamped( gpGlobals->curtime, m_flStarttime, m_flStarttime + m_flLifespan, 0.0f, 1.0f );
-
- return ( Gain( val, 0.2f ) );
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Output : inline float
-//-----------------------------------------------------------------------------
-inline float C_MortarShell::GetEndPerc( void )
-{
- float val = RemapValClamped( gpGlobals->curtime, m_flStarttime + m_flLifespan, m_flStarttime + m_flLifespan + 1.0f, 1.0f, 0.0f );
-
- return ( Gain( val, 0.75f ) );
-}
-
-#define ALPHA_MIN 0.0f
-#define ALPHA_MAX 1.0f
-
-#define SCALE_MIN 8
-#define SCALE_MAX 200
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-int C_MortarShell::DrawModel( int flags )
-{
- if ( gpGlobals->frametime <= 0.0f )
- return 0;
-
- float flPerc;
- bool ending;
-
- // See if we're in the beginning phase
- if ( gpGlobals->curtime < ( m_flStarttime + m_flLifespan ) )
- {
- flPerc = GetStartPerc();
- ending = false;
- }
- else
- {
- flPerc = GetEndPerc();
- ending = true;
- }
-
- float flAlpha = ALPHA_MIN + ( ( ALPHA_MAX - ALPHA_MIN ) * flPerc );
- float flScale = ( ending ) ? m_flRadius : ( (m_flRadius*0.1f)+ ( ( m_flRadius - (m_flRadius*0.1f) ) * flPerc ) );
-
- // Do the ground effect
- FX_AddQuad( GetAbsOrigin() + ( m_vecSurfaceNormal * 2.0f ),
- m_vecSurfaceNormal,
- flScale,
- flScale,
- 1.0f,
- flAlpha,
- flAlpha,
- 1.0f,
- 0,
- 0,
- Vector( 1.0f, 1.0f, 1.0f ),
- 0.0001f,
- "effects/combinemuzzle2_nocull",
- 0 );
-
- if ( !ending )
- {
- // Add extra effects on startup
- AddRisingParticles( flPerc );
- }
- else
- {
- // Add exploding particles after the impact
- AddExplodingParticles( flPerc );
- }
-
- return 1;
-}
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "cbase.h" +#include "fx_quad.h" +#include "fx.h" + +class C_MortarShell : public C_BaseEntity +{ +public: + + DECLARE_CLASS( C_MortarShell, C_BaseEntity ); + DECLARE_CLIENTCLASS(); + + void OnDataChanged( DataUpdateType_t updateType ); + int DrawModel( int flags ); + + RenderGroup_t GetRenderGroup( void ) { return RENDER_GROUP_TRANSLUCENT_ENTITY; } + +private: + + void AddRisingParticles( float flPerc ); + void AddExplodingParticles( float flPerc ); + + inline float GetStartPerc( void ); + inline float GetEndPerc( void ); + + CSmartPtr<CSimpleEmitter> m_pEmitter; + TimedEvent m_ParticleEvent; + + float m_flLifespan; + float m_flRadius; + float m_flStarttime; + Vector m_vecSurfaceNormal; +}; + +IMPLEMENT_CLIENTCLASS_DT( C_MortarShell, DT_MortarShell, CMortarShell ) + RecvPropFloat( RECVINFO( m_flLifespan ) ), + RecvPropFloat( RECVINFO( m_flRadius ) ), + RecvPropVector( RECVINFO( m_vecSurfaceNormal ) ), +END_RECV_TABLE() + +//----------------------------------------------------------------------------- +// Purpose: +// Input : updateType - +//----------------------------------------------------------------------------- +void C_MortarShell::OnDataChanged( DataUpdateType_t updateType ) +{ + BaseClass::OnDataChanged( updateType ); + + if ( updateType == DATA_UPDATE_CREATED ) + { + m_flStarttime = gpGlobals->curtime; + AddToLeafSystem( RENDER_GROUP_TRANSLUCENT_ENTITY ); + + m_pEmitter = CSimpleEmitter::Create( "C_EntityDissolve" ); + m_pEmitter->SetSortOrigin( GetAbsOrigin() ); + + m_ParticleEvent.Init( 128 ); + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : flPerc - +//----------------------------------------------------------------------------- +void C_MortarShell::AddRisingParticles( float flPerc ) +{ + SimpleParticle *sParticle; + + Vector offset; + float radius = m_flRadius * 0.25f * flPerc; + + float val = RemapValClamped( gpGlobals->curtime, m_flStarttime, m_flStarttime + m_flLifespan, 0.0f, 1.0f ); + + float flCur = gpGlobals->frametime; + + // Anime ground effects + while ( m_ParticleEvent.NextEvent( flCur ) ) + { + offset.x = random->RandomFloat( -radius, radius ); + offset.y = random->RandomFloat( -radius, radius ); + offset.z = random->RandomFloat( -8.0f, 8.0f ); + + offset += GetAbsOrigin(); + + sParticle = (SimpleParticle *) m_pEmitter->AddParticle( sizeof(SimpleParticle), m_pEmitter->GetPMaterial( "effects/spark" ), offset ); + + if ( sParticle == NULL ) + return; + + sParticle->m_vecVelocity = Vector( Helper_RandomFloat( -4.0f, 4.0f ), Helper_RandomFloat( -4.0f, 4.0f ), Helper_RandomFloat( 32.0f, 256.0f ) * Bias( val, 0.25f ) ); + + sParticle->m_uchStartSize = random->RandomFloat( 4, 8 ) * flPerc; + + sParticle->m_flDieTime = random->RandomFloat( 0.5f, 1.0f ); + + sParticle->m_flLifetime = 0.0f; + + sParticle->m_flRoll = Helper_RandomInt( 0, 360 ); + + float alpha = 255 * flPerc; + + sParticle->m_flRollDelta = Helper_RandomFloat( -8.0f * flPerc, 8.0f * flPerc ); + sParticle->m_uchColor[0] = alpha; + sParticle->m_uchColor[1] = alpha; + sParticle->m_uchColor[2] = alpha; + sParticle->m_uchStartAlpha = alpha; + sParticle->m_uchEndAlpha = 0; + sParticle->m_uchEndSize = 0; + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : flPerc - +//----------------------------------------------------------------------------- +void C_MortarShell::AddExplodingParticles( float flPerc ) +{ + SimpleParticle *sParticle; + + Vector offset; + float radius = 48.0f * flPerc; + + float flCur = gpGlobals->frametime; + + // Anime ground effects + while ( m_ParticleEvent.NextEvent( flCur ) ) + { + offset.x = random->RandomFloat( -radius, radius ); + offset.y = random->RandomFloat( -radius, radius ); + offset.z = random->RandomFloat( -8.0f, 8.0f ); + + offset += GetAbsOrigin(); + + sParticle = (SimpleParticle *) m_pEmitter->AddParticle( sizeof(SimpleParticle), m_pEmitter->GetPMaterial( "effects/spark" ), offset ); + + if ( sParticle == NULL ) + return; + + sParticle->m_vecVelocity = RandomVector( -1.0f, 1.0f ) + Vector( 0, 0, 1 ); + sParticle->m_vecVelocity *= ( 750.0f * flPerc ); + + sParticle->m_uchStartSize = random->RandomFloat( 2, 4 ) * flPerc; + + sParticle->m_flDieTime = random->RandomFloat( 0.25f, 0.5f ); + + sParticle->m_flLifetime = 0.0f; + + sParticle->m_flRoll = Helper_RandomInt( 0, 360 ); + + float alpha = 255 * flPerc; + + sParticle->m_flRollDelta = Helper_RandomFloat( -8.0f * flPerc, 8.0f * flPerc ); + sParticle->m_uchColor[0] = alpha; + sParticle->m_uchColor[1] = alpha; + sParticle->m_uchColor[2] = alpha; + sParticle->m_uchStartAlpha = alpha; + sParticle->m_uchEndAlpha = 0; + sParticle->m_uchEndSize = 0; + } +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : inline float +//----------------------------------------------------------------------------- +inline float C_MortarShell::GetStartPerc( void ) +{ + float val = RemapValClamped( gpGlobals->curtime, m_flStarttime, m_flStarttime + m_flLifespan, 0.0f, 1.0f ); + + return ( Gain( val, 0.2f ) ); +} + +//----------------------------------------------------------------------------- +// Purpose: +// Output : inline float +//----------------------------------------------------------------------------- +inline float C_MortarShell::GetEndPerc( void ) +{ + float val = RemapValClamped( gpGlobals->curtime, m_flStarttime + m_flLifespan, m_flStarttime + m_flLifespan + 1.0f, 1.0f, 0.0f ); + + return ( Gain( val, 0.75f ) ); +} + +#define ALPHA_MIN 0.0f +#define ALPHA_MAX 1.0f + +#define SCALE_MIN 8 +#define SCALE_MAX 200 + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +int C_MortarShell::DrawModel( int flags ) +{ + if ( gpGlobals->frametime <= 0.0f ) + return 0; + + float flPerc; + bool ending; + + // See if we're in the beginning phase + if ( gpGlobals->curtime < ( m_flStarttime + m_flLifespan ) ) + { + flPerc = GetStartPerc(); + ending = false; + } + else + { + flPerc = GetEndPerc(); + ending = true; + } + + float flAlpha = ALPHA_MIN + ( ( ALPHA_MAX - ALPHA_MIN ) * flPerc ); + float flScale = ( ending ) ? m_flRadius : ( (m_flRadius*0.1f)+ ( ( m_flRadius - (m_flRadius*0.1f) ) * flPerc ) ); + + // Do the ground effect + FX_AddQuad( GetAbsOrigin() + ( m_vecSurfaceNormal * 2.0f ), + m_vecSurfaceNormal, + flScale, + flScale, + 1.0f, + flAlpha, + flAlpha, + 1.0f, + 0, + 0, + Vector( 1.0f, 1.0f, 1.0f ), + 0.0001f, + "effects/combinemuzzle2_nocull", + 0 ); + + if ( !ending ) + { + // Add extra effects on startup + AddRisingParticles( flPerc ); + } + else + { + // Add exploding particles after the impact + AddExplodingParticles( flPerc ); + } + + return 1; +} |