diff options
Diffstat (limited to 'game/client/fx.h')
| -rw-r--r-- | game/client/fx.h | 109 |
1 files changed, 109 insertions, 0 deletions
diff --git a/game/client/fx.h b/game/client/fx.h new file mode 100644 index 0000000..3b5e4e9 --- /dev/null +++ b/game/client/fx.h @@ -0,0 +1,109 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $Workfile: $ +// $Date: $ +// $NoKeywords: $ +//===========================================================================// +#if !defined( FX_H ) +#define FX_H +#ifdef _WIN32 +#pragma once +#endif + +#include "mathlib/vector.h" +#include "particles_simple.h" +#include "c_pixel_visibility.h" + +class Vector; +class CGameTrace; +typedef CGameTrace trace_t; +//struct trace_t; + +enum +{ + FX_ENERGYSPLASH_EXPLOSIVE = 0x1, + FX_ENERGYSPLASH_SMOKE = 0x2, + FX_ENERGYSPLASH_LITTLESPARKS = 0x4, + FX_ENERGYSPLASH_BIGSPARKS = 0x8, + FX_ENERGYSPLASH_BIGSPARKSCOLLIDE = 0x10, + FX_ENERGYSPLASH_ENERGYBALLS = 0x20, + FX_ENERGYSPLASH_DLIGHT = 0x40, + + FX_ENERGYSPLASH_DEFAULT = ~FX_ENERGYSPLASH_EXPLOSIVE, + FX_ENERGYSPLASH_DEFAULT_EXPLOSIVE = ~0, +}; + +bool FX_GetAttachmentTransform( ClientEntityHandle_t hEntity, int attachmentIndex, matrix3x4_t &transform ); +bool FX_GetAttachmentTransform( ClientEntityHandle_t hEntity, int attachmentIndex, Vector *origin, QAngle *angles ); + +void FX_RicochetSound( const Vector& pos ); + +void FX_AntlionImpact( const Vector &pos, trace_t *tr ); +void FX_DebrisFlecks( const Vector& origin, trace_t *trace, char materialType, int iScale, bool bNoFlecks = false ); +void FX_Tracer( Vector& start, Vector& end, int velocity, bool makeWhiz = true ); +void FX_GunshipTracer( Vector& start, Vector& end, int velocity, bool makeWhiz = true ); +void FX_StriderTracer( Vector& start, Vector& end, int velocity, bool makeWhiz = true ); +void FX_HunterTracer( Vector& start, Vector& end, int velocity, bool makeWhiz = true ); +void FX_PlayerTracer( Vector& start, Vector& end ); +void FX_BulletPass( Vector& start, Vector& end ); +void FX_MetalSpark( const Vector &position, const Vector &direction, const Vector &surfaceNormal, int iScale = 1 ); +void FX_MetalScrape( Vector &position, Vector &normal ); +void FX_Sparks( const Vector &pos, int nMagnitude, int nTrailLength, const Vector &vecDir, float flWidth, float flMinSpeed, float flMaxSpeed, char *pSparkMaterial = NULL ); +void FX_ElectricSpark( const Vector &pos, int nMagnitude, int nTrailLength, const Vector *vecDir ); +void FX_BugBlood( Vector &pos, Vector &dir, Vector &vWorldMins, Vector &vWorldMaxs ); +void FX_Blood( Vector &pos, Vector &dir, float r, float g, float b, float a ); +void FX_CreateImpactDust( Vector &origin, Vector &normal ); +void FX_EnergySplash( const Vector &pos, const Vector &normal, int nFlags = FX_ENERGYSPLASH_DEFAULT ); +void FX_MicroExplosion( Vector &position, Vector &normal ); +void FX_Explosion( Vector& origin, Vector& normal, char materialType ); +void FX_ConcussiveExplosion( Vector& origin, Vector& normal ); +void FX_DustImpact( const Vector &origin, trace_t *tr, int iScale ); +void FX_DustImpact( const Vector &origin, trace_t *tr, float flScale ); +void FX_MuzzleEffect( const Vector &origin, const QAngle &angles, float scale, ClientEntityHandle_t hEntity, unsigned char *pFlashColor = NULL, bool bOneFrame = false ); +void FX_MuzzleEffectAttached( float scale, ClientEntityHandle_t hEntity, int attachmentIndex, unsigned char *pFlashColor = NULL, bool bOneFrame = false ); +void FX_StriderMuzzleEffect( const Vector &origin, const QAngle &angles, float scale, ClientEntityHandle_t hEntity, unsigned char *pFlashColor = NULL ); +void FX_GunshipMuzzleEffect( const Vector &origin, const QAngle &angles, float scale, ClientEntityHandle_t hEntity, unsigned char *pFlashColor = NULL ); +CSmartPtr<CSimpleEmitter> FX_Smoke( const Vector &origin, const Vector &velocity, float scale, int numParticles, float flDietime, unsigned char *pColor, int iAlpha, const char *pMaterial, float flRoll, float flRollDelta ); +void FX_Smoke( const Vector &origin, const QAngle &angles, float scale, int numParticles, unsigned char *pColor = NULL, int iAlpha = -1 ); +void FX_Dust( const Vector &vecOrigin, const Vector &vecDirection, float flSize, float flSpeed ); +void FX_CreateGaussExplosion( const Vector &pos, const Vector &dir, int type ); +void FX_GaussTracer( Vector& start, Vector& end, int velocity, bool makeWhiz = true ); +void FX_TracerSound( const Vector &start, const Vector &end, int iTracerType ); + +// Lighting information utility +void UTIL_GetNormalizedColorTintAndLuminosity( const Vector &color, Vector *tint = NULL, float *luminosity = NULL ); + +// Useful function for testing whether to draw noZ effects +bool EffectOccluded( const Vector &pos, pixelvis_handle_t *queryHandle = 0 ); + +class CTeslaInfo +{ +public: + Vector m_vPos; + QAngle m_vAngles; + int m_nEntIndex; + const char *m_pszSpriteName; + float m_flBeamWidth; + int m_nBeams; + Vector m_vColor; + float m_flTimeVisible; + float m_flRadius; +}; + +void FX_Tesla( const CTeslaInfo &teslaInfo ); +extern ConVar r_decals; + +extern void FX_CacheMaterialHandles( void ); + +extern PMaterialHandle g_Mat_Fleck_Wood[2]; +extern PMaterialHandle g_Mat_Fleck_Cement[2]; +extern PMaterialHandle g_Mat_Fleck_Antlion[2]; +extern PMaterialHandle g_Mat_Fleck_Tile[2]; +extern PMaterialHandle g_Mat_DustPuff[2]; +extern PMaterialHandle g_Mat_BloodPuff[2]; +extern PMaterialHandle g_Mat_Fleck_Glass[2]; +extern PMaterialHandle g_Mat_SMG_Muzzleflash[4]; +extern PMaterialHandle g_Mat_Combine_Muzzleflash[3]; +#endif // FX_H |