62 lines
1.5 KiB
C++
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
|