diff options
Diffstat (limited to 'mp/src/game/client/fx_impact.h')
| -rw-r--r-- | mp/src/game/client/fx_impact.h | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/mp/src/game/client/fx_impact.h b/mp/src/game/client/fx_impact.h new file mode 100644 index 00000000..f85c1f1f --- /dev/null +++ b/mp/src/game/client/fx_impact.h @@ -0,0 +1,69 @@ +//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose:
+//
+//=============================================================================//
+
+#ifndef FX_IMPACT_H
+#define FX_IMPACT_H
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "c_te_effect_dispatch.h"
+#include "istudiorender.h"
+
+// Parse the impact data from the server's data block
+C_BaseEntity *ParseImpactData( const CEffectData &data, Vector *vecOrigin, Vector *vecStart, Vector *vecShotDir, short &nSurfaceProp, int &iMaterial, int &iDamageType, int &iHitbox );
+
+// Get the decal name to use based on an impact with the specified entity, surface material, and damage type
+char const *GetImpactDecal( C_BaseEntity *pEntity, int iMaterial, int iDamageType );
+
+// Basic decal handling
+// Returns true if it hit something
+enum
+{
+ IMPACT_NODECAL = 0x1,
+ IMPACT_REPORT_RAGDOLL_IMPACTS = 0x2,
+};
+
+bool Impact( Vector &vecOrigin, Vector &vecStart, int iMaterial, int iDamageType, int iHitbox, C_BaseEntity *pEntity, trace_t &tr, int nFlags = 0, int maxLODToDecal = ADDDECAL_TO_ALL_LODS );
+
+// Flags for PerformCustomEffects
+enum
+{
+ FLAGS_CUSTIOM_EFFECTS_NOFLECKS = 0x1,
+};
+
+// Do spiffy things according to the material hit
+void PerformCustomEffects( const Vector &vecOrigin, trace_t &tr, const Vector &shotDir, int iMaterial, int iScale, int nFlags = 0 );
+
+// Play the correct impact sound according to the material hit
+void PlayImpactSound( C_BaseEntity *pServerEntity, trace_t &tr, Vector &vecServerOrigin, int nServerSurfaceProp );
+
+// This can be used to hook impact sounds and play them at a later time.
+// Shotguns do this so it doesn't play 10 identical sounds in the same spot.
+typedef void (*ImpactSoundRouteFn)( const char *pSoundName, const Vector &vEndPos );
+void SetImpactSoundRoute( ImpactSoundRouteFn fn );
+
+//-----------------------------------------------------------------------------
+// Purpose: Enumerator class for ragdolls being affected by bullet forces
+//-----------------------------------------------------------------------------
+class CRagdollEnumerator : public IPartitionEnumerator
+{
+public:
+ // Forced constructor
+ CRagdollEnumerator( Ray_t& shot, int iDamageType );
+
+ // Actual work code
+ virtual IterationRetval_t EnumElement( IHandleEntity *pHandleEntity );
+
+ bool Hit( void ) const { return m_bHit; }
+
+private:
+ Ray_t m_rayShot;
+ int m_iDamageType;
+ bool m_bHit;
+};
+
+#endif // FX_IMPACT_H
|