mirror of
https://github.com/alliedmodders/hl2sdk.git
synced 2024-12-22 17:47:38 +08:00
3957adff10
Recompiled tier1 and mathlib for all platforms will come in next commit.
95 lines
2.5 KiB
C++
95 lines
2.5 KiB
C++
//========= 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
|
|
|