Modified source engine (2017) developed by valve and leaked in 2020. Not for commercial purporses
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

63 lines
2.0 KiB

#ifndef _DEFINED_ASW_SENTRY_TOP_FLAMER_H
#define _DEFINED_ASW_SENTRY_TOP_FLAMER_H
#pragma once
#include "asw_sentry_top.h"
class CASW_Sentry_Top_Flamer : public CASW_Sentry_Top
{
public:
DECLARE_CLASS( CASW_Sentry_Top_Flamer, CASW_Sentry_Top );
DECLARE_SERVERCLASS();
DECLARE_DATADESC();
CASW_Sentry_Top_Flamer( int projectileVelocity = 0 ); // zero actually means "default"
// virtual ~CASW_Sentry_Top_Machinegun();
/// Override this because flamer-style turrets don't have discrete fire,
/// but rather start and stop firing continuously.
virtual void CheckFiring();
virtual float GetYawTo(CBaseEntity* pEnt);
/// This emits one frame's worth of fire; it works differently
/// from the single-shot fire on other turret types.
virtual void Fire();
virtual void SetTopModel();
/// flamer turrets are on/off with their firing.
virtual void StartFiring();
virtual void StopFiring();
/// True iff currently firing this frame.
inline bool IsFiring() { return m_bFiring; };
int GetSentryDamage();
virtual ITraceFilter *GetVisibilityTraceFilter();
inline float GetProjectileVelocity() const { return m_nProjectileVelocity; }
// Classification
virtual Class_T Classify( void ) { return (Class_T) CLASS_ASW_SENTRY_FLAMER; }
protected:
/// Helper function for Fire() -- actually emit the "bullets" of flame or ice
virtual void FireProjectiles( int numShotsToFire,
const Vector &vecSrc, const Vector &vecAiming, const AngularImpulse &rotSpeed = AngularImpulse(0,0,720) );
CNetworkVar(bool, m_bFiring);
CNetworkVar(float, m_flPitchHack); // just for a second to deal with stairs until I get proper pitch gimballing on base class
float m_flLastFireTime;
float m_flFireHysteresisTime;
const int m_nProjectileVelocity;
};
/// Compute the necessary trajectory for a projectile to hit a moving object.
Vector ProjectileIntercept( const Vector &vProjectileOrigin, const float fProjectileVelocity,
const Vector &vTargetOrigin, const Vector &vTargetDirection,
float * RESTRICT pflTime = NULL );
#endif /* _DEFINED_ASW_SENTRY_TOP_FLAMER_H */