diff options
| author | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:31:46 -0800 |
|---|---|---|
| committer | Jørgen P. Tjernø <[email protected]> | 2013-12-02 19:46:31 -0800 |
| commit | f56bb35301836e56582a575a75864392a0177875 (patch) | |
| tree | de61ddd39de3e7df52759711950b4c288592f0dc /mp/src/game/server/hl2/vehicle_crane.h | |
| parent | Mark some more files as text. (diff) | |
| download | source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.tar.xz source-sdk-2013-f56bb35301836e56582a575a75864392a0177875.zip | |
Fix line endings. WHAMMY.
Diffstat (limited to 'mp/src/game/server/hl2/vehicle_crane.h')
| -rw-r--r-- | mp/src/game/server/hl2/vehicle_crane.h | 500 |
1 files changed, 250 insertions, 250 deletions
diff --git a/mp/src/game/server/hl2/vehicle_crane.h b/mp/src/game/server/hl2/vehicle_crane.h index d692c365..57d25e81 100644 --- a/mp/src/game/server/hl2/vehicle_crane.h +++ b/mp/src/game/server/hl2/vehicle_crane.h @@ -1,250 +1,250 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-// $NoKeywords: $
-//
-//=============================================================================//
-//
-// Purpose:
-//
-//=============================================================================
-
-#ifndef VEHICLE_CRANE_H
-#define VEHICLE_CRANE_H
-#ifdef _WIN32
-#pragma once
-#endif
-
-#include "physobj.h"
-#include "rope.h"
-#include "rope_shared.h"
-#include "physics_bone_follower.h"
-
-#define CRANE_EXTENSION_RATE_MAX 0.01
-#define CRANE_TURN_RATE_MAX 1.2
-#define MAXIMUM_CRANE_PICKUP_MASS 10000
-#define MINIMUM_CRANE_PICKUP_MASS 500
-
-#define MAX_CRANE_FLAT_REACH 1400.0
-#define MIN_CRANE_FLAT_REACH 700.0
-#define CRANE_EXTENSION_ACCEL 0.006
-#define CRANE_EXTENSION_DECEL 0.02
-#define CRANE_TURN_ACCEL 0.2
-#define CRANE_DECEL 0.5
-
-#define CRANE_SLOWRAISE_TIME 5.0
-
-// Turning stats
-enum
-{
- TURNING_NOT,
- TURNING_LEFT,
- TURNING_RIGHT,
-};
-
-class CPropCrane;
-
-//-----------------------------------------------------------------------------
-// Purpose: This is the entity we attach to the tip of the crane and dangle the cable from
-//-----------------------------------------------------------------------------
-class CCraneTip : public CBaseAnimating
-{
- DECLARE_CLASS( CCraneTip, CBaseAnimating );
-public:
- DECLARE_DATADESC();
-
- ~CCraneTip( void )
- {
- if ( m_pSpring )
- {
- physenv->DestroySpring( m_pSpring );
- }
- }
-
- void Spawn( void );
- void Precache( void );
-
- bool CreateConstraint( CBaseAnimating *pMagnet, IPhysicsConstraintGroup *pGroup );
- static CCraneTip *Create( CBaseAnimating *pCraneMagnet, IPhysicsConstraintGroup *pGroup, const Vector &vecOrigin, const QAngle &vecAngles );
-
-public:
- IPhysicsSpring *m_pSpring;
-};
-
-//-----------------------------------------------------------------------------
-// Purpose: Crane vehicle server
-//-----------------------------------------------------------------------------
-class CCraneServerVehicle : public CBaseServerVehicle
-{
- typedef CBaseServerVehicle BaseClass;
-// IServerVehicle
-public:
- void GetVehicleViewPosition( int nRole, Vector *pAbsOrigin, QAngle *pAbsAngles, float *pFOV = NULL );
-
- // NPC Driving
- void NPC_SetDriver( CNPC_VehicleDriver *pDriver );
- void NPC_DriveVehicle( void );
-
- virtual bool IsPassengerEntering( void ) { return false; } // NOTE: This mimics the scenario HL2 would have seen
- virtual bool IsPassengerExiting( void ) { return false; }
-
-protected:
- CPropCrane *GetCrane( void );
-};
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class CPropCrane : public CBaseProp, public IDrivableVehicle
-{
- DECLARE_CLASS( CPropCrane, CBaseProp );
-public:
- DECLARE_DATADESC();
- DECLARE_SERVERCLASS();
-
- CPropCrane( void )
- {
- m_ServerVehicle.SetVehicle( this );
- }
-
- ~CPropCrane( void )
- {
- physenv->DestroyConstraintGroup( m_pConstraintGroup );
- }
-
- // CBaseEntity
- virtual void Precache( void );
- void Spawn( void );
- void Activate( void );
- void UpdateOnRemove( void );
- bool CreateVPhysics( void );
- void InitCraneSpeeds( void );
- void Think(void);
- virtual int ObjectCaps( void ) { return BaseClass::ObjectCaps() | FCAP_IMPULSE_USE; };
- virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value );
- virtual void DrawDebugGeometryOverlays( void );
-
- virtual bool PassengerShouldReceiveDamage( CTakeDamageInfo &info )
- {
- if ( info.GetDamageType() & DMG_VEHICLE )
- return true;
-
- return (info.GetDamageType() & (DMG_RADIATION|DMG_BLAST) ) == 0;
- }
-
- virtual Vector BodyTarget( const Vector &posSrc, bool bNoisy = true );
- virtual void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator );
- virtual int OnTakeDamage( const CTakeDamageInfo &info );
-
- void PlayerControlInit( CBasePlayer *pPlayer );
- void PlayerControlShutdown( void );
- void ResetUseKey( CBasePlayer *pPlayer );
-
- void DriveCrane( int iDriverButtons, int iButtonsPressed, float flNPCSteering = 0.0 );
- void RunCraneMovement( float flTime );
-
- void TurnMagnetOn( void );
- void TurnMagnetOff( void );
- const Vector &GetCraneTipPosition( void );
- float GetExtensionRate( void ) { return m_flExtensionRate; }
- float GetTurnRate( void ) { return m_flTurn; }
- float GetMaxTurnRate( void ) { return m_flMaxTurnSpeed; }
- CPhysMagnet *GetMagnet( void ) { return m_hCraneMagnet; }
- float GetTotalMassOnCrane( void ) { return m_hCraneMagnet->GetTotalMassAttachedObjects(); }
- bool IsDropping( void ) { return m_bDropping; }
-
- // Inputs
- void InputLock( inputdata_t &inputdata );
- void InputUnlock( inputdata_t &inputdata );
- void InputForcePlayerIn( inputdata_t &inputdata );
-
- // Crane handling
- void GetCraneTipPosition( Vector *vecOrigin, QAngle *vecAngles );
- void RecalculateCraneTip( void );
- void GetVectors(Vector* pForward, Vector* pRight, Vector* pUp) const;
-
- void SetNPCDriver( CNPC_VehicleDriver *pDriver );
-
-// IDrivableVehicle
-public:
- virtual CBaseEntity *GetDriver( void );
- virtual void ItemPostFrame( CBasePlayer *pPlayer );
- virtual void SetupMove( CBasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move );
- virtual void ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMoveData ) { return; }
- virtual void FinishMove( CBasePlayer *player, CUserCmd *ucmd, CMoveData *move ) { return; }
- virtual bool CanEnterVehicle( CBaseEntity *pEntity );
- virtual bool CanExitVehicle( CBaseEntity *pEntity );
- virtual void SetVehicleEntryAnim( bool bOn ) { m_bEnterAnimOn = bOn; }
- virtual void SetVehicleExitAnim( bool bOn, Vector vecEyeExitEndpoint ) { m_bExitAnimOn = bOn; if ( bOn ) m_vecEyeExitEndpoint = vecEyeExitEndpoint; }
- virtual void EnterVehicle( CBaseCombatCharacter *pPassenger );
-
- virtual bool AllowBlockedExit( CBaseCombatCharacter *pPassenger, int nRole ) { return true; }
- virtual bool AllowMidairExit( CBaseCombatCharacter *pPassenger, int nRole ) { return false; }
- virtual void PreExitVehicle( CBaseCombatCharacter *pPassenger, int nRole );
- virtual void ExitVehicle( int nRole );
- virtual string_t GetVehicleScriptName() { return m_vehicleScript; }
-
- // If this is a vehicle, returns the vehicle interface
- virtual IServerVehicle *GetServerVehicle() { return &m_ServerVehicle; }
-
-protected:
- // Contained IServerVehicle
- CCraneServerVehicle m_ServerVehicle;
- // Contained Bone Follower manager
- CBoneFollowerManager m_BoneFollowerManager;
-
-private:
-
- CNetworkHandle( CBasePlayer, m_hPlayer );
- CNetworkVar( bool, m_bMagnetOn );
-
- // NPC Driving
- CHandle<CNPC_VehicleDriver> m_hNPCDriver;
- int m_nNPCButtons;
-
- // Entering / Exiting
- bool m_bLocked;
- CNetworkVar( bool, m_bEnterAnimOn );
- CNetworkVar( bool, m_bExitAnimOn );
- CNetworkVector( m_vecEyeExitEndpoint );
- COutputEvent m_playerOn;
- COutputEvent m_playerOff;
-
- // Turning
- int m_iTurning;
- bool m_bStartSoundAtCrossover;
- float m_flTurn;
-
- // Crane arm extension / retraction
- bool m_bExtending;
- float m_flExtension;
- float m_flExtensionRate;
-
- // Magnet movement
- bool m_bDropping;
- float m_flNextDangerSoundTime;
- float m_flNextCreakSound;
- float m_flNextDropAllowedTime;
- float m_flSlowRaiseTime;
-
- // Speeds
- float m_flMaxExtensionSpeed;
- float m_flMaxTurnSpeed;
- float m_flExtensionAccel;
- float m_flExtensionDecel;
- float m_flTurnAccel;
- float m_flTurnDecel;
-
- // Cable Tip & Magnet
- string_t m_iszMagnetName;
- CHandle<CPhysMagnet> m_hCraneMagnet;
- CHandle<CCraneTip> m_hCraneTip;
- CHandle<CRopeKeyframe> m_hRope;
- IPhysicsConstraintGroup *m_pConstraintGroup;
-
- // Vehicle script filename
- string_t m_vehicleScript;
-};
-
-#endif // VEHICLE_CRANE_H
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +// $NoKeywords: $ +// +//=============================================================================// +// +// Purpose: +// +//============================================================================= + +#ifndef VEHICLE_CRANE_H +#define VEHICLE_CRANE_H +#ifdef _WIN32 +#pragma once +#endif + +#include "physobj.h" +#include "rope.h" +#include "rope_shared.h" +#include "physics_bone_follower.h" + +#define CRANE_EXTENSION_RATE_MAX 0.01 +#define CRANE_TURN_RATE_MAX 1.2 +#define MAXIMUM_CRANE_PICKUP_MASS 10000 +#define MINIMUM_CRANE_PICKUP_MASS 500 + +#define MAX_CRANE_FLAT_REACH 1400.0 +#define MIN_CRANE_FLAT_REACH 700.0 +#define CRANE_EXTENSION_ACCEL 0.006 +#define CRANE_EXTENSION_DECEL 0.02 +#define CRANE_TURN_ACCEL 0.2 +#define CRANE_DECEL 0.5 + +#define CRANE_SLOWRAISE_TIME 5.0 + +// Turning stats +enum +{ + TURNING_NOT, + TURNING_LEFT, + TURNING_RIGHT, +}; + +class CPropCrane; + +//----------------------------------------------------------------------------- +// Purpose: This is the entity we attach to the tip of the crane and dangle the cable from +//----------------------------------------------------------------------------- +class CCraneTip : public CBaseAnimating +{ + DECLARE_CLASS( CCraneTip, CBaseAnimating ); +public: + DECLARE_DATADESC(); + + ~CCraneTip( void ) + { + if ( m_pSpring ) + { + physenv->DestroySpring( m_pSpring ); + } + } + + void Spawn( void ); + void Precache( void ); + + bool CreateConstraint( CBaseAnimating *pMagnet, IPhysicsConstraintGroup *pGroup ); + static CCraneTip *Create( CBaseAnimating *pCraneMagnet, IPhysicsConstraintGroup *pGroup, const Vector &vecOrigin, const QAngle &vecAngles ); + +public: + IPhysicsSpring *m_pSpring; +}; + +//----------------------------------------------------------------------------- +// Purpose: Crane vehicle server +//----------------------------------------------------------------------------- +class CCraneServerVehicle : public CBaseServerVehicle +{ + typedef CBaseServerVehicle BaseClass; +// IServerVehicle +public: + void GetVehicleViewPosition( int nRole, Vector *pAbsOrigin, QAngle *pAbsAngles, float *pFOV = NULL ); + + // NPC Driving + void NPC_SetDriver( CNPC_VehicleDriver *pDriver ); + void NPC_DriveVehicle( void ); + + virtual bool IsPassengerEntering( void ) { return false; } // NOTE: This mimics the scenario HL2 would have seen + virtual bool IsPassengerExiting( void ) { return false; } + +protected: + CPropCrane *GetCrane( void ); +}; + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class CPropCrane : public CBaseProp, public IDrivableVehicle +{ + DECLARE_CLASS( CPropCrane, CBaseProp ); +public: + DECLARE_DATADESC(); + DECLARE_SERVERCLASS(); + + CPropCrane( void ) + { + m_ServerVehicle.SetVehicle( this ); + } + + ~CPropCrane( void ) + { + physenv->DestroyConstraintGroup( m_pConstraintGroup ); + } + + // CBaseEntity + virtual void Precache( void ); + void Spawn( void ); + void Activate( void ); + void UpdateOnRemove( void ); + bool CreateVPhysics( void ); + void InitCraneSpeeds( void ); + void Think(void); + virtual int ObjectCaps( void ) { return BaseClass::ObjectCaps() | FCAP_IMPULSE_USE; }; + virtual void Use( CBaseEntity *pActivator, CBaseEntity *pCaller, USE_TYPE useType, float value ); + virtual void DrawDebugGeometryOverlays( void ); + + virtual bool PassengerShouldReceiveDamage( CTakeDamageInfo &info ) + { + if ( info.GetDamageType() & DMG_VEHICLE ) + return true; + + return (info.GetDamageType() & (DMG_RADIATION|DMG_BLAST) ) == 0; + } + + virtual Vector BodyTarget( const Vector &posSrc, bool bNoisy = true ); + virtual void TraceAttack( const CTakeDamageInfo &info, const Vector &vecDir, trace_t *ptr, CDmgAccumulator *pAccumulator ); + virtual int OnTakeDamage( const CTakeDamageInfo &info ); + + void PlayerControlInit( CBasePlayer *pPlayer ); + void PlayerControlShutdown( void ); + void ResetUseKey( CBasePlayer *pPlayer ); + + void DriveCrane( int iDriverButtons, int iButtonsPressed, float flNPCSteering = 0.0 ); + void RunCraneMovement( float flTime ); + + void TurnMagnetOn( void ); + void TurnMagnetOff( void ); + const Vector &GetCraneTipPosition( void ); + float GetExtensionRate( void ) { return m_flExtensionRate; } + float GetTurnRate( void ) { return m_flTurn; } + float GetMaxTurnRate( void ) { return m_flMaxTurnSpeed; } + CPhysMagnet *GetMagnet( void ) { return m_hCraneMagnet; } + float GetTotalMassOnCrane( void ) { return m_hCraneMagnet->GetTotalMassAttachedObjects(); } + bool IsDropping( void ) { return m_bDropping; } + + // Inputs + void InputLock( inputdata_t &inputdata ); + void InputUnlock( inputdata_t &inputdata ); + void InputForcePlayerIn( inputdata_t &inputdata ); + + // Crane handling + void GetCraneTipPosition( Vector *vecOrigin, QAngle *vecAngles ); + void RecalculateCraneTip( void ); + void GetVectors(Vector* pForward, Vector* pRight, Vector* pUp) const; + + void SetNPCDriver( CNPC_VehicleDriver *pDriver ); + +// IDrivableVehicle +public: + virtual CBaseEntity *GetDriver( void ); + virtual void ItemPostFrame( CBasePlayer *pPlayer ); + virtual void SetupMove( CBasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move ); + virtual void ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMoveData ) { return; } + virtual void FinishMove( CBasePlayer *player, CUserCmd *ucmd, CMoveData *move ) { return; } + virtual bool CanEnterVehicle( CBaseEntity *pEntity ); + virtual bool CanExitVehicle( CBaseEntity *pEntity ); + virtual void SetVehicleEntryAnim( bool bOn ) { m_bEnterAnimOn = bOn; } + virtual void SetVehicleExitAnim( bool bOn, Vector vecEyeExitEndpoint ) { m_bExitAnimOn = bOn; if ( bOn ) m_vecEyeExitEndpoint = vecEyeExitEndpoint; } + virtual void EnterVehicle( CBaseCombatCharacter *pPassenger ); + + virtual bool AllowBlockedExit( CBaseCombatCharacter *pPassenger, int nRole ) { return true; } + virtual bool AllowMidairExit( CBaseCombatCharacter *pPassenger, int nRole ) { return false; } + virtual void PreExitVehicle( CBaseCombatCharacter *pPassenger, int nRole ); + virtual void ExitVehicle( int nRole ); + virtual string_t GetVehicleScriptName() { return m_vehicleScript; } + + // If this is a vehicle, returns the vehicle interface + virtual IServerVehicle *GetServerVehicle() { return &m_ServerVehicle; } + +protected: + // Contained IServerVehicle + CCraneServerVehicle m_ServerVehicle; + // Contained Bone Follower manager + CBoneFollowerManager m_BoneFollowerManager; + +private: + + CNetworkHandle( CBasePlayer, m_hPlayer ); + CNetworkVar( bool, m_bMagnetOn ); + + // NPC Driving + CHandle<CNPC_VehicleDriver> m_hNPCDriver; + int m_nNPCButtons; + + // Entering / Exiting + bool m_bLocked; + CNetworkVar( bool, m_bEnterAnimOn ); + CNetworkVar( bool, m_bExitAnimOn ); + CNetworkVector( m_vecEyeExitEndpoint ); + COutputEvent m_playerOn; + COutputEvent m_playerOff; + + // Turning + int m_iTurning; + bool m_bStartSoundAtCrossover; + float m_flTurn; + + // Crane arm extension / retraction + bool m_bExtending; + float m_flExtension; + float m_flExtensionRate; + + // Magnet movement + bool m_bDropping; + float m_flNextDangerSoundTime; + float m_flNextCreakSound; + float m_flNextDropAllowedTime; + float m_flSlowRaiseTime; + + // Speeds + float m_flMaxExtensionSpeed; + float m_flMaxTurnSpeed; + float m_flExtensionAccel; + float m_flExtensionDecel; + float m_flTurnAccel; + float m_flTurnDecel; + + // Cable Tip & Magnet + string_t m_iszMagnetName; + CHandle<CPhysMagnet> m_hCraneMagnet; + CHandle<CCraneTip> m_hCraneTip; + CHandle<CRopeKeyframe> m_hRope; + IPhysicsConstraintGroup *m_pConstraintGroup; + + // Vehicle script filename + string_t m_vehicleScript; +}; + +#endif // VEHICLE_CRANE_H |