aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/shared/baseprojectile.cpp
diff options
context:
space:
mode:
authorMichael Sartain <[email protected]>2014-10-02 08:25:55 -0700
committerMichael Sartain <[email protected]>2014-10-02 08:25:55 -0700
commit55ed12f8d1eb6887d348be03aee5573d44177ffb (patch)
tree3686f7ca78c780cd9a3d367b79a9d9250c1be7c0 /mp/src/game/shared/baseprojectile.cpp
parent* Added support for Visual C++ 2013 Express to VPC (diff)
downloadsource-sdk-2013-55ed12f8d1eb6887d348be03aee5573d44177ffb.tar.xz
source-sdk-2013-55ed12f8d1eb6887d348be03aee5573d44177ffb.zip
Updated the SDK with the latest code from the TF and HL2 branches.
Diffstat (limited to 'mp/src/game/shared/baseprojectile.cpp')
-rw-r--r--mp/src/game/shared/baseprojectile.cpp63
1 files changed, 63 insertions, 0 deletions
diff --git a/mp/src/game/shared/baseprojectile.cpp b/mp/src/game/shared/baseprojectile.cpp
index c695db93..54a0e9bc 100644
--- a/mp/src/game/shared/baseprojectile.cpp
+++ b/mp/src/game/shared/baseprojectile.cpp
@@ -12,6 +12,11 @@
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()
@@ -22,5 +27,63 @@ 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
+