aboutsummaryrefslogtreecommitdiff
path: root/mp/src/game/server/hl2/cbasehelicopter.h
diff options
context:
space:
mode:
authorJørgen P. Tjernø <[email protected]>2013-12-02 19:31:46 -0800
committerJørgen P. Tjernø <[email protected]>2013-12-02 19:46:31 -0800
commitf56bb35301836e56582a575a75864392a0177875 (patch)
treede61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/hl2/cbasehelicopter.h
parentMark some more files as text. (diff)
downloadsource-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz
source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/hl2/cbasehelicopter.h')
-rw-r--r--mp/src/game/server/hl2/cbasehelicopter.h588
1 files changed, 294 insertions, 294 deletions
diff --git a/mp/src/game/server/hl2/cbasehelicopter.h b/mp/src/game/server/hl2/cbasehelicopter.h
index 7a636cb2..4ca3b091 100644
--- a/mp/src/game/server/hl2/cbasehelicopter.h
+++ b/mp/src/game/server/hl2/cbasehelicopter.h
@@ -1,294 +1,294 @@
-//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose: Base class for helicopters & helicopter-type vehicles
-//
-// $NoKeywords: $
-//=============================================================================//
-
-#ifndef CBASEHELICOPTER_H
-#define CBASEHELICOPTER_H
-
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "ai_basenpc.h"
-#include "ai_trackpather.h"
-
-
-//---------------------------------------------------------
-// Helicopter flags
-//---------------------------------------------------------
-enum HelicopterFlags_t
-{
- BITS_HELICOPTER_GUN_ON = 0x00000001, // Gun is on and aiming
- BITS_HELICOPTER_MISSILE_ON = 0x00000002, // Missile turrets are on and aiming
-};
-
-
-//---------------------------------------------------------
-//---------------------------------------------------------
-#define SF_NOWRECKAGE 0x08
-#define SF_NOROTORWASH 0x20
-#define SF_AWAITINPUT 0x40
-
-//---------------------------------------------------------
-//---------------------------------------------------------
-// Pathing data
-#define BASECHOPPER_LEAD_DISTANCE 800.0f
-#define BASECHOPPER_MIN_CHASE_DIST_DIFF 128.0f // Distance threshold used to determine when a target has moved enough to update our navigation to it
-#define BASECHOPPER_AVOID_DIST 256.0f
-
-#define BASECHOPPER_MAX_SPEED 400.0f
-#define BASECHOPPER_MAX_FIRING_SPEED 250.0f
-#define BASECHOPPER_MIN_ROCKET_DIST 1000.0f
-#define BASECHOPPER_MAX_GUN_DIST 2000.0f
-
-//---------------------------------------------------------
-// Physics rotor pushing
-#define BASECHOPPER_WASH_RADIUS 256
-#define BASECHOPPER_WASH_PUSH_MIN 30 // Initial force * their mass applied to objects in the wash
-#define BASECHOPPER_WASH_PUSH_MAX 40 // Maximum force * their mass applied to objects in the wash
-#define BASECHOPPER_WASH_RAMP_TIME 1.0 // Time it takes to ramp from the initial to the max force on an object in the wash (at the center of the wash)
-#define BASECHOPPER_WASH_MAX_MASS 300 // Don't attempt to push anything over this mass
-#define BASECHOPPER_WASH_MAX_OBJECTS 6 // Maximum number of objects the wash will push at once
-
-// Wash physics pushing
-struct washentity_t
-{
- DECLARE_DATADESC();
-
- EHANDLE hEntity;
- float flWashStartTime;
-};
-
-#define BASECHOPPER_WASH_ALTITUDE 1024.0f
-
-//=========================================================
-//=========================================================
-
-class CBaseHelicopter : public CAI_TrackPather
-{
-public:
- DECLARE_CLASS( CBaseHelicopter, CAI_TrackPather );
-
- DECLARE_DATADESC();
- DECLARE_SERVERCLASS();
-
- CBaseHelicopter( void );
-
- void Spawn( void );
- void Precache( void );
- virtual void UpdateOnRemove();
-
- void Event_Killed( const CTakeDamageInfo &info );
- void StopLoopingSounds();
-
- int BloodColor( void ) { return DONT_BLEED; }
- void GibMonster( void );
-
- Class_T Classify ( void ) { return CLASS_COMBINE; }
-
- void CallDyingThink( void ) { DyingThink(); }
-
- bool HasEnemy( void ) { return GetEnemy() != NULL; }
- virtual void GatherEnemyConditions( CBaseEntity *pEnemy );
- virtual bool ChooseEnemy( void );
- virtual void HelicopterPostThink( void ) { };
- virtual void FlyTouch( CBaseEntity *pOther );
- virtual void CrashTouch( CBaseEntity *pOther );
- virtual void HelicopterThink( void );
- virtual void DyingThink( void );
- virtual void NullThink( void );
- virtual void Startup ( void );
-
- virtual void Flight( void );
-
- virtual void ShowDamage( void ) {};
-
- void UpdatePlayerDopplerShift( void );
-
- virtual void Hunt( void );
-
- virtual bool IsCrashing( void ) { return m_lifeState != LIFE_ALIVE; }
- virtual float GetAcceleration( void ) { return 5; }
-
- virtual void ApplySidewaysDrag( const Vector &vecRight );
- virtual void ApplyGeneralDrag( void );
-
- void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator );
-
- virtual bool FireGun( void );
-
- virtual float GetRotorVolume( void );
- virtual void InitializeRotorSound( void );
- virtual void UpdateRotorSoundPitch( int iPitch );
-
- virtual void AimRocketGun(void) {};
- virtual void FireRocket( Vector vLaunchPos, Vector vLaunchDir ) {};
-
- virtual bool GetTrackPatherTarget( Vector *pPos );
- virtual CBaseEntity *GetTrackPatherTargetEnt();
-
- void DrawDebugGeometryOverlays(void);
-
- // Rotor washes
- virtual void DrawRotorWash( float flAltitude, const Vector &vecRotorOrigin );
- void DoRotorPhysicsPush( const Vector &vecRotorOrigin, float flAltitude );
- bool DoWashPush( washentity_t *pWash, const Vector &vecWashOrigin );
- void StopRotorWash( void );
-
- // Purpose: Marks the entity for deletion
- void InputKill( inputdata_t &inputdata );
- void DelayedKillThink( );
-
- virtual void SetTransmit( CCheckTransmitInfo *pInfo, bool bAlways );
-
- // Helicopters never burn
- virtual void Ignite( float flFlameLifetime, bool bNPCOnly, float flSize, bool bCalledByLevelDesigner ) { return; }
-
-
-protected:
- void HelicopterMove( );
-
- // Updates the enemy
- void UpdateEnemy();
-
- // Override the desired position if your derived helicopter is doing something special
- virtual void UpdateDesiredPosition( void );
-
- // Updates the facing direction
- virtual void UpdateFacingDirection();
-
- // Fire weapons
- void FireWeapons();
-
- // Computes the actual position to fly to
- void ComputeActualTargetPosition( float flSpeed, float flTime, float flPerpDist, Vector *pDest, bool bApplyNoise = true );
-
- // Gets the max speed of the helicopter
- virtual float GetMaxSpeed();
- virtual float GetMaxSpeedFiring();
-
- // Updates the enemy
- virtual float EnemySearchDistance( );
-
- // Rotor wash think
- void RotorWashThink( void );
-
- // Purpose: Push an airboat in our wash
- void DoWashPushOnAirboat( CBaseEntity *pAirboat, const Vector &vecWashToAirboat, float flWashAmount );
-
- // Updates the rotor wash volume
- virtual void UpdateRotorWashVolume();
-
- // Rotor sound
- void InputEnableRotorSound( inputdata_t &inputdata );
- void InputDisableRotorSound( inputdata_t &inputdata );
-
-protected:
- CSoundPatch *m_pRotorSound; // Rotor loop played when the player can see the helicopter
- CSoundPatch *m_pRotorBlast; // Sound played when the helicopter's pushing around physics objects
-
- float m_flForce;
- int m_fHelicopterFlags;
-
- Vector m_vecDesiredFaceDir;
-
- float m_flLastSeen;
- float m_flPrevSeen;
-
- int m_iSoundState; // don't save this
-
- Vector m_vecTargetPosition;
-
- float m_flMaxSpeed; // Maximum speed of the helicopter.
- float m_flMaxSpeedFiring; // Maximum speed of the helicopter whilst firing guns.
-
- float m_flGoalSpeed; // Goal speed
- float m_flInitialSpeed;
-
- float m_flRandomOffsetTime;
- Vector m_vecRandomOffset;
- float m_flRotorWashEntitySearchTime;
- bool m_bSuppressSound;
-
- EHANDLE m_hRotorWash; // Attached rotorwash entity
-
- // Inputs
- void InputActivate( inputdata_t &inputdata );
-
- // Inputs
- void InputGunOn( inputdata_t &inputdata );
- void InputGunOff( inputdata_t &inputdata );
- void InputMissileOn( inputdata_t &inputdata );
- void InputMissileOff( inputdata_t &inputdata );
- void InputEnableRotorWash( inputdata_t &inputdata );
- void InputDisableRotorWash( inputdata_t &inputdata );
- void InputMoveTopSpeed( inputdata_t &inputdata ); // Causes the helicopter to immediately accelerate to its desired velocity
- void InputMoveSpecifiedSpeed( inputdata_t &inputdata );
- void InputSetAngles( inputdata_t &inputdata ); // Sets the angles of the helicopter
-
-protected:
- // Custom conservative collision volumes
- Vector m_cullBoxMins;
- Vector m_cullBoxMaxs;
-
- // Wash physics pushing
- CUtlVector< washentity_t > m_hEntitiesPushedByWash;
-
- void SetStartupTime( float time ) { m_flStartupTime = time; }
-private:
- CNetworkVar( float, m_flStartupTime );
-};
-
-//-----------------------------------------------------------------------------
-// This entity is used to create little force spheres that the helicopter
-// should avoid.
-//-----------------------------------------------------------------------------
-class CAvoidSphere : public CBaseEntity
-{
- DECLARE_DATADESC();
-
-public:
- DECLARE_CLASS( CAvoidSphere, CBaseEntity );
-
- void Init( float flRadius );
- virtual void Activate();
- virtual void UpdateOnRemove();
-
- static void ComputeAvoidanceForces( CBaseEntity *pEntity, float flEntityRadius, float flAvoidTime, Vector *pVecAvoidForce );
-
-private:
- typedef CHandle<CAvoidSphere> AvoidSphereHandle_t;
-
- float m_flRadius;
-
- static CUtlVector< AvoidSphereHandle_t > s_AvoidSpheres;
-};
-
-
-//-----------------------------------------------------------------------------
-// This entity is used to create little force boxes that the helicopter
-// should avoid.
-//-----------------------------------------------------------------------------
-class CAvoidBox : public CBaseEntity
-{
- DECLARE_DATADESC();
-
-public:
- DECLARE_CLASS( CAvoidBox, CBaseEntity );
-
- virtual void Spawn( );
- virtual void Activate();
- virtual void UpdateOnRemove();
-
- static void ComputeAvoidanceForces( CBaseEntity *pEntity, float flEntityRadius, float flAvoidTime, Vector *pVecAvoidForce );
-
-private:
- typedef CHandle<CAvoidBox> AvoidBoxHandle_t;
- static CUtlVector< AvoidBoxHandle_t > s_AvoidBoxes;
-};
-
-
-#endif // CBASEHELICOPTER_H
+//========= Copyright Valve Corporation, All rights reserved. ============//
+//
+// Purpose: Base class for helicopters & helicopter-type vehicles
+//
+// $NoKeywords: $
+//=============================================================================//
+
+#ifndef CBASEHELICOPTER_H
+#define CBASEHELICOPTER_H
+
+#ifdef _WIN32
+#pragma once
+#endif
+
+#include "ai_basenpc.h"
+#include "ai_trackpather.h"
+
+
+//---------------------------------------------------------
+// Helicopter flags
+//---------------------------------------------------------
+enum HelicopterFlags_t
+{
+ BITS_HELICOPTER_GUN_ON = 0x00000001, // Gun is on and aiming
+ BITS_HELICOPTER_MISSILE_ON = 0x00000002, // Missile turrets are on and aiming
+};
+
+
+//---------------------------------------------------------
+//---------------------------------------------------------
+#define SF_NOWRECKAGE 0x08
+#define SF_NOROTORWASH 0x20
+#define SF_AWAITINPUT 0x40
+
+//---------------------------------------------------------
+//---------------------------------------------------------
+// Pathing data
+#define BASECHOPPER_LEAD_DISTANCE 800.0f
+#define BASECHOPPER_MIN_CHASE_DIST_DIFF 128.0f // Distance threshold used to determine when a target has moved enough to update our navigation to it
+#define BASECHOPPER_AVOID_DIST 256.0f
+
+#define BASECHOPPER_MAX_SPEED 400.0f
+#define BASECHOPPER_MAX_FIRING_SPEED 250.0f
+#define BASECHOPPER_MIN_ROCKET_DIST 1000.0f
+#define BASECHOPPER_MAX_GUN_DIST 2000.0f
+
+//---------------------------------------------------------
+// Physics rotor pushing
+#define BASECHOPPER_WASH_RADIUS 256
+#define BASECHOPPER_WASH_PUSH_MIN 30 // Initial force * their mass applied to objects in the wash
+#define BASECHOPPER_WASH_PUSH_MAX 40 // Maximum force * their mass applied to objects in the wash
+#define BASECHOPPER_WASH_RAMP_TIME 1.0 // Time it takes to ramp from the initial to the max force on an object in the wash (at the center of the wash)
+#define BASECHOPPER_WASH_MAX_MASS 300 // Don't attempt to push anything over this mass
+#define BASECHOPPER_WASH_MAX_OBJECTS 6 // Maximum number of objects the wash will push at once
+
+// Wash physics pushing
+struct washentity_t
+{
+ DECLARE_DATADESC();
+
+ EHANDLE hEntity;
+ float flWashStartTime;
+};
+
+#define BASECHOPPER_WASH_ALTITUDE 1024.0f
+
+//=========================================================
+//=========================================================
+
+class CBaseHelicopter : public CAI_TrackPather
+{
+public:
+ DECLARE_CLASS( CBaseHelicopter, CAI_TrackPather );
+
+ DECLARE_DATADESC();
+ DECLARE_SERVERCLASS();
+
+ CBaseHelicopter( void );
+
+ void Spawn( void );
+ void Precache( void );
+ virtual void UpdateOnRemove();
+
+ void Event_Killed( const CTakeDamageInfo &info );
+ void StopLoopingSounds();
+
+ int BloodColor( void ) { return DONT_BLEED; }
+ void GibMonster( void );
+
+ Class_T Classify ( void ) { return CLASS_COMBINE; }
+
+ void CallDyingThink( void ) { DyingThink(); }
+
+ bool HasEnemy( void ) { return GetEnemy() != NULL; }
+ virtual void GatherEnemyConditions( CBaseEntity *pEnemy );
+ virtual bool ChooseEnemy( void );
+ virtual void HelicopterPostThink( void ) { };
+ virtual void FlyTouch( CBaseEntity *pOther );
+ virtual void CrashTouch( CBaseEntity *pOther );
+ virtual void HelicopterThink( void );
+ virtual void DyingThink( void );
+ virtual void NullThink( void );
+ virtual void Startup ( void );
+
+ virtual void Flight( void );
+
+ virtual void ShowDamage( void ) {};
+
+ void UpdatePlayerDopplerShift( void );
+
+ virtual void Hunt( void );
+
+ virtual bool IsCrashing( void ) { return m_lifeState != LIFE_ALIVE; }
+ virtual float GetAcceleration( void ) { return 5; }
+
+ virtual void ApplySidewaysDrag( const Vector &vecRight );
+ virtual void ApplyGeneralDrag( void );
+
+ void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator );
+
+ virtual bool FireGun( void );
+
+ virtual float GetRotorVolume( void );
+ virtual void InitializeRotorSound( void );
+ virtual void UpdateRotorSoundPitch( int iPitch );
+
+ virtual void AimRocketGun(void) {};
+ virtual void FireRocket( Vector vLaunchPos, Vector vLaunchDir ) {};
+
+ virtual bool GetTrackPatherTarget( Vector *pPos );
+ virtual CBaseEntity *GetTrackPatherTargetEnt();
+
+ void DrawDebugGeometryOverlays(void);
+
+ // Rotor washes
+ virtual void DrawRotorWash( float flAltitude, const Vector &vecRotorOrigin );
+ void DoRotorPhysicsPush( const Vector &vecRotorOrigin, float flAltitude );
+ bool DoWashPush( washentity_t *pWash, const Vector &vecWashOrigin );
+ void StopRotorWash( void );
+
+ // Purpose: Marks the entity for deletion
+ void InputKill( inputdata_t &inputdata );
+ void DelayedKillThink( );
+
+ virtual void SetTransmit( CCheckTransmitInfo *pInfo, bool bAlways );
+
+ // Helicopters never burn
+ virtual void Ignite( float flFlameLifetime, bool bNPCOnly, float flSize, bool bCalledByLevelDesigner ) { return; }
+
+
+protected:
+ void HelicopterMove( );
+
+ // Updates the enemy
+ void UpdateEnemy();
+
+ // Override the desired position if your derived helicopter is doing something special
+ virtual void UpdateDesiredPosition( void );
+
+ // Updates the facing direction
+ virtual void UpdateFacingDirection();
+
+ // Fire weapons
+ void FireWeapons();
+
+ // Computes the actual position to fly to
+ void ComputeActualTargetPosition( float flSpeed, float flTime, float flPerpDist, Vector *pDest, bool bApplyNoise = true );
+
+ // Gets the max speed of the helicopter
+ virtual float GetMaxSpeed();
+ virtual float GetMaxSpeedFiring();
+
+ // Updates the enemy
+ virtual float EnemySearchDistance( );
+
+ // Rotor wash think
+ void RotorWashThink( void );
+
+ // Purpose: Push an airboat in our wash
+ void DoWashPushOnAirboat( CBaseEntity *pAirboat, const Vector &vecWashToAirboat, float flWashAmount );
+
+ // Updates the rotor wash volume
+ virtual void UpdateRotorWashVolume();
+
+ // Rotor sound
+ void InputEnableRotorSound( inputdata_t &inputdata );
+ void InputDisableRotorSound( inputdata_t &inputdata );
+
+protected:
+ CSoundPatch *m_pRotorSound; // Rotor loop played when the player can see the helicopter
+ CSoundPatch *m_pRotorBlast; // Sound played when the helicopter's pushing around physics objects
+
+ float m_flForce;
+ int m_fHelicopterFlags;
+
+ Vector m_vecDesiredFaceDir;
+
+ float m_flLastSeen;
+ float m_flPrevSeen;
+
+ int m_iSoundState; // don't save this
+
+ Vector m_vecTargetPosition;
+
+ float m_flMaxSpeed; // Maximum speed of the helicopter.
+ float m_flMaxSpeedFiring; // Maximum speed of the helicopter whilst firing guns.
+
+ float m_flGoalSpeed; // Goal speed
+ float m_flInitialSpeed;
+
+ float m_flRandomOffsetTime;
+ Vector m_vecRandomOffset;
+ float m_flRotorWashEntitySearchTime;
+ bool m_bSuppressSound;
+
+ EHANDLE m_hRotorWash; // Attached rotorwash entity
+
+ // Inputs
+ void InputActivate( inputdata_t &inputdata );
+
+ // Inputs
+ void InputGunOn( inputdata_t &inputdata );
+ void InputGunOff( inputdata_t &inputdata );
+ void InputMissileOn( inputdata_t &inputdata );
+ void InputMissileOff( inputdata_t &inputdata );
+ void InputEnableRotorWash( inputdata_t &inputdata );
+ void InputDisableRotorWash( inputdata_t &inputdata );
+ void InputMoveTopSpeed( inputdata_t &inputdata ); // Causes the helicopter to immediately accelerate to its desired velocity
+ void InputMoveSpecifiedSpeed( inputdata_t &inputdata );
+ void InputSetAngles( inputdata_t &inputdata ); // Sets the angles of the helicopter
+
+protected:
+ // Custom conservative collision volumes
+ Vector m_cullBoxMins;
+ Vector m_cullBoxMaxs;
+
+ // Wash physics pushing
+ CUtlVector< washentity_t > m_hEntitiesPushedByWash;
+
+ void SetStartupTime( float time ) { m_flStartupTime = time; }
+private:
+ CNetworkVar( float, m_flStartupTime );
+};
+
+//-----------------------------------------------------------------------------
+// This entity is used to create little force spheres that the helicopter
+// should avoid.
+//-----------------------------------------------------------------------------
+class CAvoidSphere : public CBaseEntity
+{
+ DECLARE_DATADESC();
+
+public:
+ DECLARE_CLASS( CAvoidSphere, CBaseEntity );
+
+ void Init( float flRadius );
+ virtual void Activate();
+ virtual void UpdateOnRemove();
+
+ static void ComputeAvoidanceForces( CBaseEntity *pEntity, float flEntityRadius, float flAvoidTime, Vector *pVecAvoidForce );
+
+private:
+ typedef CHandle<CAvoidSphere> AvoidSphereHandle_t;
+
+ float m_flRadius;
+
+ static CUtlVector< AvoidSphereHandle_t > s_AvoidSpheres;
+};
+
+
+//-----------------------------------------------------------------------------
+// This entity is used to create little force boxes that the helicopter
+// should avoid.
+//-----------------------------------------------------------------------------
+class CAvoidBox : public CBaseEntity
+{
+ DECLARE_DATADESC();
+
+public:
+ DECLARE_CLASS( CAvoidBox, CBaseEntity );
+
+ virtual void Spawn( );
+ virtual void Activate();
+ virtual void UpdateOnRemove();
+
+ static void ComputeAvoidanceForces( CBaseEntity *pEntity, float flEntityRadius, float flAvoidTime, Vector *pVecAvoidForce );
+
+private:
+ typedef CHandle<CAvoidBox> AvoidBoxHandle_t;
+ static CUtlVector< AvoidBoxHandle_t > s_AvoidBoxes;
+};
+
+
+#endif // CBASEHELICOPTER_H