diff options
Diffstat (limited to 'game/server/portal/cbaseanimatingprojectile.cpp')
| -rw-r--r-- | game/server/portal/cbaseanimatingprojectile.cpp | 83 |
1 files changed, 83 insertions, 0 deletions
diff --git a/game/server/portal/cbaseanimatingprojectile.cpp b/game/server/portal/cbaseanimatingprojectile.cpp new file mode 100644 index 0000000..06b5c3f --- /dev/null +++ b/game/server/portal/cbaseanimatingprojectile.cpp @@ -0,0 +1,83 @@ +//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: Base class for simple projectiles +// +// $Workfile: $ +// $Date: $ +// $NoKeywords: $ +//=============================================================================// + +#include "cbase.h" +#include "cbaseanimatingprojectile.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +LINK_ENTITY_TO_CLASS( baseanimating_projectile, CBaseAnimatingProjectile ); + +//--------------------------------------------------------- +// Save/Restore +//--------------------------------------------------------- +BEGIN_DATADESC( CBaseAnimatingProjectile ) + + DEFINE_FIELD( m_iDmg, FIELD_INTEGER ), + DEFINE_FIELD( m_iDmgType, FIELD_INTEGER ), + +END_DATADESC() + +//--------------------------------------------------------- +//--------------------------------------------------------- +void CBaseAnimatingProjectile::Spawn( char *pszModel, + const Vector &vecOrigin, + const Vector &vecVelocity, + edict_t *pOwner, + MoveType_t iMovetype, + MoveCollide_t nMoveCollide, + int iDamage, + int iDamageType ) +{ + Precache(); + + SetSolid( SOLID_BBOX ); + SetModel( pszModel ); + + UTIL_SetSize( this, vec3_origin, vec3_origin ); + + m_iDmg = iDamage; + m_iDmgType = iDamageType; + + SetMoveType( iMovetype, nMoveCollide ); + + UTIL_SetOrigin( this, vecOrigin ); + SetAbsVelocity( vecVelocity ); + + SetOwnerEntity( Instance( pOwner ) ); + + QAngle qAngles; + VectorAngles( vecVelocity, qAngles ); + SetAbsAngles( qAngles ); +} + + +//--------------------------------------------------------- +//--------------------------------------------------------- +void CBaseAnimatingProjectile::Touch( CBaseEntity *pOther ) +{ + CBaseEntity *pOwner; + + pOwner = GetOwnerEntity(); + + if( !pOwner ) + { + pOwner = this; + } + + trace_t tr; + tr = BaseClass::GetTouchTrace( ); + + CTakeDamageInfo info( this, pOwner, m_iDmg, m_iDmgType ); + GuessDamageForce( &info, (tr.endpos - tr.startpos), tr.endpos ); + pOther->TakeDamage( info ); + + UTIL_Remove( this ); +} |