diff options
Diffstat (limited to 'game/client/hl1/hl1_c_legacytempents.cpp')
| -rw-r--r-- | game/client/hl1/hl1_c_legacytempents.cpp | 101 |
1 files changed, 101 insertions, 0 deletions
diff --git a/game/client/hl1/hl1_c_legacytempents.cpp b/game/client/hl1/hl1_c_legacytempents.cpp new file mode 100644 index 0000000..a107cc4 --- /dev/null +++ b/game/client/hl1/hl1_c_legacytempents.cpp @@ -0,0 +1,101 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//===========================================================================// + + +#include "cbase.h" +#include "tempentity.h" +#include "tempent.h" +#include "c_te_legacytempents.h" + + +#define NUM_MUZZLE_SPRITES 3 + + +class CHL1TempEnts : public CTempEnts +{ +public: + CHL1TempEnts( void ) { }; + virtual ~CHL1TempEnts( void ) { }; + +public: + virtual void Init( void ); + virtual void LevelInit(); + void MuzzleFlash( const Vector &pos1, const QAngle &angles, int type, ClientEntityHandle_t hEntity, bool firstPerson = false ); + +private: + CHL1TempEnts( const CHL1TempEnts & ); + +private: + struct model_t *m_pSpriteMuzzleFlash[ NUM_MUZZLE_SPRITES ]; +}; + + +// Temp entity interface +static CHL1TempEnts g_TempEnts; +// Expose to rest of the client .dll +ITempEnts *tempents = ( ITempEnts * )&g_TempEnts; + +void CHL1TempEnts::LevelInit() +{ + CTempEnts::LevelInit(); + + m_pSpriteMuzzleFlash[0] = (model_t *)engine->LoadModel( "sprites/muzzleflash1.vmt" ); + m_pSpriteMuzzleFlash[1] = (model_t *)engine->LoadModel( "sprites/muzzleflash2.vmt" ); + m_pSpriteMuzzleFlash[2] = (model_t *)engine->LoadModel( "sprites/muzzleflash3.vmt" ); +} + +void CHL1TempEnts::Init( void ) +{ + CTempEnts::Init(); + + m_pSpriteMuzzleFlash[0] = (model_t *)engine->LoadModel( "sprites/muzzleflash1.vmt" ); + m_pSpriteMuzzleFlash[1] = (model_t *)engine->LoadModel( "sprites/muzzleflash2.vmt" ); + m_pSpriteMuzzleFlash[2] = (model_t *)engine->LoadModel( "sprites/muzzleflash3.vmt" ); +} + + +void CHL1TempEnts::MuzzleFlash( const Vector& pos1, const QAngle& angles, int type, ClientEntityHandle_t hEntity, bool firstPerson ) +{ + C_LocalTempEntity *pTemp; + int index; + float scale; + int frameCount; + QAngle ang; + + index = type % 10; + index = index % NUM_MUZZLE_SPRITES; + + scale = ( type / 10 ) * 0.1; + if ( scale == 0 ) + scale = 0.5; + + frameCount = modelinfo->GetModelFrameCount( m_pSpriteMuzzleFlash[index] ); + + // DevMsg( 1,"%d %f\n", index, scale ); + pTemp = TempEntAlloc( pos1, ( model_t * )m_pSpriteMuzzleFlash[index] ); + if (!pTemp) + return; + + pTemp->SetRenderMode( kRenderTransAdd ); + pTemp->m_nRenderFX = 0; + pTemp->SetRenderColor( 255, 255, 255, 255 ); + pTemp->m_flSpriteScale = scale; + pTemp->SetAbsOrigin( pos1 ); + pTemp->die = gpGlobals->curtime + 0.01; + pTemp->m_flFrame = random->RandomInt( 0, frameCount-1 ); + pTemp->m_flFrameMax = frameCount - 1; + + ang = vec3_angle; + if (index == 0) + { + ang.z = random->RandomInt( 0, 20 ); + } + else + { + ang.z = random->RandomInt( 0, 359 ); + } + pTemp->SetAbsAngles( ang ); +} |