sqwarmed/sdk_src/game/server/baseprojectile.h

62 lines
1.5 KiB
C++

//====== Copyright © 1996-2005, Valve Corporation, All rights reserved. =======
//
// Purpose:
//
//=============================================================================
#ifndef BASEPROJECTILE_H
#define BASEPROJECTILE_H
#ifdef _WIN32
#pragma once
#endif
// Creation.
struct baseprojectilecreate_t
{
Vector vecOrigin;
Vector vecVelocity;
CBaseEntity *pOwner;
string_t iszModel;
float flDamage;
int iDamageType;
float flDamageScale;
};
//=============================================================================
//
// Generic projectile
//
class CBaseProjectile : public CBaseAnimating
{
DECLARE_CLASS( CBaseProjectile, CBaseAnimating );
public:
DECLARE_DATADESC();
void Spawn( void );
void Precache( void );
static CBaseProjectile *Create( baseprojectilecreate_t &pCreate );
void SetDamage( float flDamage ) { m_flDamage = flDamage; }
void SetDamageScale( float &flScale ) { m_flDamageScale = flScale; }
void SetDamageType( int iType ) { m_iDamageType = iType; }
private:
// Damage
virtual float GetDamage() { return m_flDamage; }
virtual float GetDamageScale( void ) { return m_flDamageScale; }
virtual int GetDamageType( void ) { return m_iDamageType; }
unsigned int PhysicsSolidMaskForEntity( void ) const;
virtual void ProjectileTouch( CBaseEntity *pOther );
void FlyThink( void );
protected:
float m_flDamage;
int m_iDamageType;
float m_flDamageScale;
};
#endif // BASEPROJECTILE_H