diff options
Diffstat (limited to 'game/client/sdk/sdk_fx_impacts.cpp')
| -rw-r--r-- | game/client/sdk/sdk_fx_impacts.cpp | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/game/client/sdk/sdk_fx_impacts.cpp b/game/client/sdk/sdk_fx_impacts.cpp new file mode 100644 index 0000000..c1ae37f --- /dev/null +++ b/game/client/sdk/sdk_fx_impacts.cpp @@ -0,0 +1,44 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Game-specific impact effect hooks +// +//=============================================================================// +#include "cbase.h" +#include "fx_impact.h" +#include "engine/IEngineSound.h" + + + +//----------------------------------------------------------------------------- +// Purpose: Handle weapon impacts +//----------------------------------------------------------------------------- +void ImpactCallback( const CEffectData &data ) +{ + trace_t tr; + Vector vecOrigin, vecStart, vecShotDir; + int iMaterial, iDamageType, iHitbox; + short nSurfaceProp; + + C_BaseEntity *pEntity = ParseImpactData( data, &vecOrigin, &vecStart, &vecShotDir, nSurfaceProp, iMaterial, iDamageType, iHitbox ); + + if ( !pEntity ) + return; + + // If we hit, perform our custom effects and play the sound + if ( Impact( vecOrigin, vecStart, iMaterial, iDamageType, iHitbox, pEntity, tr ) ) + { + // Check for custom effects based on the Decal index + PerformCustomEffects( vecOrigin, tr, vecShotDir, iMaterial, 1.0 ); + + //Play a ricochet sound some of the time + if( random->RandomInt(1,10) <= 3 && (iDamageType == DMG_BULLET) ) + { + CLocalPlayerFilter filter; + C_BaseEntity::EmitSound( filter, SOUND_FROM_WORLD, "Bounce.Shrapnel", &vecOrigin ); + } + } + + PlayImpactSound( pEntity, tr, vecOrigin, nSurfaceProp ); +} + +DECLARE_CLIENT_EFFECT( "Impact", ImpactCallback ); |