Team Fortress 2 Source Code as on 22/4/2020
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
//========= Copyright Valve Corporation, All rights reserved. ============//
//
// Purpose:
//
//=============================================================================
#include "cbase.h"
#include "c_dod_basegrenade.h"
#include "c_dod_player.h"
#include "dodoverview.h"
IMPLEMENT_NETWORKCLASS_ALIASED( DODBaseGrenade, DT_DODBaseGrenade )
BEGIN_NETWORK_TABLE(C_DODBaseGrenade, DT_DODBaseGrenade ) RecvPropVector( RECVINFO( m_vInitialVelocity ) ) END_NETWORK_TABLE()
//-----------------------------------------------------------------------------
// Purpose:
//-----------------------------------------------------------------------------
C_DODBaseGrenade::~C_DODBaseGrenade() { GetDODOverview()->RemoveGrenade( this ); ParticleProp()->StopEmission(); }
void C_DODBaseGrenade::PostDataUpdate( DataUpdateType_t type ) { BaseClass::PostDataUpdate( type );
if ( type == DATA_UPDATE_CREATED ) { // Now stick our initial velocity into the interpolation history
CInterpolatedVar< Vector > &interpolator = GetOriginInterpolator();
interpolator.ClearHistory(); float changeTime = GetLastChangeTime( LATCH_SIMULATION_VAR );
// Add a sample 1 second back.
Vector vCurOrigin = GetLocalOrigin() - m_vInitialVelocity; interpolator.AddToHead( changeTime - 1.0, &vCurOrigin, false );
// Add the current sample.
vCurOrigin = GetLocalOrigin(); interpolator.AddToHead( changeTime, &vCurOrigin, false );
// BUG ? this may call multiple times
GetDODOverview()->AddGrenade( this );
const char *pszParticleTrail = GetParticleTrailName(); if ( pszParticleTrail ) { ParticleProp()->Create( pszParticleTrail, PATTACH_ABSORIGIN_FOLLOW ); } } }
int C_DODBaseGrenade::DrawModel( int flags ) { if( m_flSpawnTime + 0.15 > gpGlobals->curtime ) return 0;
C_DODPlayer *pPlayer = C_DODPlayer::GetLocalDODPlayer();
if ( pPlayer && GetAbsVelocity().Length() < 30 ) { pPlayer->CheckGrenadeHint( GetAbsOrigin() ); }
return BaseClass::DrawModel( flags ); }
void C_DODBaseGrenade::Spawn() { m_flSpawnTime = gpGlobals->curtime; BaseClass::Spawn(); }
const char *C_DODBaseGrenade::GetOverviewSpriteName( void ) { const char *pszSprite = "";
switch( GetTeamNumber() ) { case TEAM_ALLIES: pszSprite = "sprites/minimap_icons/grenade_hltv"; break; case TEAM_AXIS: pszSprite = "sprites/minimap_icons/stick_hltv"; break; default: break; }
return pszSprite; }
IMPLEMENT_NETWORKCLASS_ALIASED( DODRifleGrenadeUS, DT_DODRifleGrenadeUS )
BEGIN_NETWORK_TABLE(C_DODRifleGrenadeUS, DT_DODRifleGrenadeUS ) END_NETWORK_TABLE()
IMPLEMENT_CLIENTCLASS_DT(C_DODRifleGrenadeGER, DT_DODRifleGrenadeGER, CDODRifleGrenadeGER) END_RECV_TABLE()
|