1
This commit is contained in:
94
game/shared/baseprojectile.cpp
Normal file
94
game/shared/baseprojectile.cpp
Normal file
@ -0,0 +1,94 @@
|
||||
//========= 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
|
||||
|
Reference in New Issue
Block a user