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.
94 lines
2.4 KiB
94 lines
2.4 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
|
|
#include "cbase.h" |
|
#include "baseprojectile.h" |
|
|
|
|
|
IMPLEMENT_NETWORKCLASS_ALIASED( BaseProjectile, DT_BaseProjectile ) |
|
|
|
BEGIN_NETWORK_TABLE( CBaseProjectile, DT_BaseProjectile ) |
|
#if !defined( CLIENT_DLL ) |
|
SendPropEHandle( SENDINFO( m_hOriginalLauncher ) ), |
|
#else |
|
RecvPropEHandle( RECVINFO( m_hOriginalLauncher ) ), |
|
#endif // CLIENT_DLL |
|
END_NETWORK_TABLE() |
|
|
|
|
|
#ifndef CLIENT_DLL |
|
IMPLEMENT_AUTO_LIST( IBaseProjectileAutoList ); |
|
#endif // !CLIENT_DLL |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: Constructor. |
|
//----------------------------------------------------------------------------- |
|
CBaseProjectile::CBaseProjectile() |
|
{ |
|
#ifdef GAME_DLL |
|
m_iDestroyableHitCount = 0; |
|
|
|
m_bCanCollideWithTeammates = false; |
|
#endif |
|
m_hOriginalLauncher = NULL; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CBaseProjectile::SetLauncher( CBaseEntity *pLauncher ) |
|
{ |
|
if ( m_hOriginalLauncher == NULL ) |
|
{ |
|
m_hOriginalLauncher = pLauncher; |
|
} |
|
|
|
#ifdef GAME_DLL |
|
ResetCollideWithTeammates(); |
|
#endif // GAME_DLL |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CBaseProjectile::Spawn() |
|
{ |
|
BaseClass::Spawn(); |
|
|
|
#ifdef GAME_DLL |
|
ResetCollideWithTeammates(); |
|
#endif // GAME_DLL |
|
} |
|
|
|
|
|
#ifdef GAME_DLL |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CBaseProjectile::CollideWithTeammatesThink() |
|
{ |
|
m_bCanCollideWithTeammates = true; |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void CBaseProjectile::ResetCollideWithTeammates() |
|
{ |
|
// Don't collide with players on the owner's team for the first bit of our life |
|
m_bCanCollideWithTeammates = false; |
|
|
|
SetContextThink( &CBaseProjectile::CollideWithTeammatesThink, gpGlobals->curtime + GetCollideWithTeammatesDelay(), "CollideWithTeammates" ); |
|
} |
|
|
|
#endif // GAME_DLL |
|
|
|
|