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 /sp/src/game/client/c_vehicle_choreo_generic.cpp | |
| 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 'sp/src/game/client/c_vehicle_choreo_generic.cpp')
| -rw-r--r-- | sp/src/game/client/c_vehicle_choreo_generic.cpp | 518 |
1 files changed, 259 insertions, 259 deletions
diff --git a/sp/src/game/client/c_vehicle_choreo_generic.cpp b/sp/src/game/client/c_vehicle_choreo_generic.cpp index 09f9f357..52eba09e 100644 --- a/sp/src/game/client/c_vehicle_choreo_generic.cpp +++ b/sp/src/game/client/c_vehicle_choreo_generic.cpp @@ -1,259 +1,259 @@ -//========= Copyright Valve Corporation, All rights reserved. ============//
-//
-// Purpose:
-//
-//=============================================================================//
-
-#include "cbase.h"
-#include "hud.h"
-#include "c_props.h"
-#include "iclientvehicle.h"
-#include <vgui_controls/Controls.h>
-#include <Color.h>
-#include "vehicle_choreo_generic_shared.h"
-#include "vehicle_viewblend_shared.h"
-// NVNT haptic utils
-#include "haptics/haptic_utils.h"
-
-// memdbgon must be the last include file in a .cpp file!!!
-#include "tier0/memdbgon.h"
-
-extern float RemapAngleRange( float startInterval, float endInterval, float value );
-
-
-#define ROLL_CURVE_ZERO 5 // roll less than this is clamped to zero
-#define ROLL_CURVE_LINEAR 45 // roll greater than this is copied out
-
-#define PITCH_CURVE_ZERO 10 // pitch less than this is clamped to zero
-#define PITCH_CURVE_LINEAR 45 // pitch greater than this is copied out
- // spline in between
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-class C_PropVehicleChoreoGeneric : public C_DynamicProp, public IClientVehicle
-{
- DECLARE_CLASS( C_PropVehicleChoreoGeneric, C_DynamicProp );
-
-public:
-
- DECLARE_CLIENTCLASS();
- DECLARE_DATADESC();
-
- C_PropVehicleChoreoGeneric();
-
- void PreDataUpdate( DataUpdateType_t updateType );
- void PostDataUpdate( DataUpdateType_t updateType );
-
-public:
-
- // IClientVehicle overrides.
- virtual void GetVehicleViewPosition( int nRole, Vector *pOrigin, QAngle *pAngles, float *pFOV = NULL );
- virtual void GetVehicleFOV( float &flFOV )
- {
- flFOV = m_flFOV;
- }
- virtual void DrawHudElements();
- virtual bool IsPassengerUsingStandardWeapons( int nRole = VEHICLE_ROLE_DRIVER ) { return false; }
- virtual void UpdateViewAngles( C_BasePlayer *pLocalPlayer, CUserCmd *pCmd );
- virtual C_BaseCombatCharacter *GetPassenger( int nRole );
- virtual int GetPassengerRole( C_BaseCombatCharacter *pPassenger );
- virtual void GetVehicleClipPlanes( float &flZNear, float &flZFar ) const;
- virtual int GetPrimaryAmmoType() const { return -1; }
- virtual int GetPrimaryAmmoCount() const { return -1; }
- virtual int GetPrimaryAmmoClip() const { return -1; }
- virtual bool PrimaryAmmoUsesClips() const { return false; }
- virtual int GetJoystickResponseCurve() const { return 0; }
-
-public:
-
- // C_BaseEntity overrides.
- virtual IClientVehicle* GetClientVehicle() { return this; }
- virtual C_BaseEntity *GetVehicleEnt() { return this; }
- virtual void SetupMove( C_BasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move ) {}
- virtual void ProcessMovement( C_BasePlayer *pPlayer, CMoveData *pMoveData ) {}
- virtual void FinishMove( C_BasePlayer *player, CUserCmd *ucmd, CMoveData *move ) {}
- virtual bool IsPredicted() const { return false; }
- virtual void ItemPostFrame( C_BasePlayer *pPlayer ) {}
- virtual bool IsSelfAnimating() { return false; };
-
-private:
-
- CHandle<C_BasePlayer> m_hPlayer;
- CHandle<C_BasePlayer> m_hPrevPlayer;
-
- bool m_bEnterAnimOn;
- bool m_bExitAnimOn;
- Vector m_vecEyeExitEndpoint;
- float m_flFOV; // The current FOV (changes during entry/exit anims).
-
- ViewSmoothingData_t m_ViewSmoothingData;
-
- vehicleview_t m_vehicleView;
-};
-
-IMPLEMENT_CLIENTCLASS_DT(C_PropVehicleChoreoGeneric, DT_PropVehicleChoreoGeneric, CPropVehicleChoreoGeneric)
- RecvPropEHandle( RECVINFO(m_hPlayer) ),
- RecvPropBool( RECVINFO( m_bEnterAnimOn ) ),
- RecvPropBool( RECVINFO( m_bExitAnimOn ) ),
- RecvPropVector( RECVINFO( m_vecEyeExitEndpoint ) ),
- RecvPropBool( RECVINFO( m_vehicleView.bClampEyeAngles ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flPitchCurveZero ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flPitchCurveLinear ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flRollCurveZero ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flRollCurveLinear ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flFOV ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flYawMin ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flYawMax ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flPitchMin ) ),
- RecvPropFloat( RECVINFO( m_vehicleView.flPitchMax ) ),
-END_RECV_TABLE()
-
-
-BEGIN_DATADESC( C_PropVehicleChoreoGeneric )
- DEFINE_EMBEDDED( m_ViewSmoothingData ),
-END_DATADESC()
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-C_PropVehicleChoreoGeneric::C_PropVehicleChoreoGeneric( void )
-{
- memset( &m_ViewSmoothingData, 0, sizeof( m_ViewSmoothingData ) );
-
- m_ViewSmoothingData.pVehicle = this;
- m_ViewSmoothingData.flPitchCurveZero = PITCH_CURVE_ZERO;
- m_ViewSmoothingData.flPitchCurveLinear = PITCH_CURVE_LINEAR;
- m_ViewSmoothingData.flRollCurveZero = ROLL_CURVE_ZERO;
- m_ViewSmoothingData.flRollCurveLinear = ROLL_CURVE_LINEAR;
- m_flFOV = 0;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : updateType -
-//-----------------------------------------------------------------------------
-void C_PropVehicleChoreoGeneric::PreDataUpdate( DataUpdateType_t updateType )
-{
- BaseClass::PreDataUpdate( updateType );
-
- m_hPrevPlayer = m_hPlayer;
-}
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-void C_PropVehicleChoreoGeneric::PostDataUpdate( DataUpdateType_t updateType )
-{
- BaseClass::PostDataUpdate( updateType );
-
- // NVNT if we have entered this vehicle notify the haptics system
- if ( m_hPlayer && !m_hPrevPlayer )
- {
-#if defined( WIN32 ) && !defined( _X360 )
- //They have just entered the vehicle.
- HapticsEnteredVehicle(this,m_hPlayer);
-#endif
- }
-
- if ( !m_hPlayer && m_hPrevPlayer )
- {
-#if defined( WIN32 ) && !defined( _X360 )
- // NVNT we have just exited this vehicle so we notify the haptics system
- HapticsExitedVehicle(this,m_hPrevPlayer);
-#endif
- // They have just exited the vehicle.
- // Sometimes we never reach the end of our exit anim, such as if the
- // animation doesn't have fadeout 0 specified in the QC, so we fail to
- // catch it in VehicleViewSmoothing. Catch it here instead.
- m_ViewSmoothingData.bWasRunningAnim = false;
-
- //There's no need to "smooth" the view when leaving the vehicle so just set this here so the stair code doesn't get confused.
- m_hPrevPlayer->SetOldPlayerZ( m_hPrevPlayer->GetLocalOrigin().z );
- }
-
- m_ViewSmoothingData.bClampEyeAngles = m_vehicleView.bClampEyeAngles;
- m_ViewSmoothingData.flFOV = m_vehicleView.flFOV;
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-//-----------------------------------------------------------------------------
-C_BaseCombatCharacter *C_PropVehicleChoreoGeneric::GetPassenger( int nRole )
-{
- if ( nRole == VEHICLE_ROLE_DRIVER )
- return m_hPlayer.Get();
-
- return NULL;
-}
-
-
-//-----------------------------------------------------------------------------
-// Returns the role of the passenger
-//-----------------------------------------------------------------------------
-int C_PropVehicleChoreoGeneric::GetPassengerRole( C_BaseCombatCharacter *pPassenger )
-{
- if ( m_hPlayer.Get() == pPassenger )
- return VEHICLE_ROLE_DRIVER;
-
- return VEHICLE_ROLE_NONE;
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose: Modify the player view/camera while in a vehicle
-//-----------------------------------------------------------------------------
-void C_PropVehicleChoreoGeneric::GetVehicleViewPosition( int nRole, Vector *pAbsOrigin, QAngle *pAbsAngles, float *pFOV /*=NULL*/ )
-{
- SharedVehicleViewSmoothing( m_hPlayer,
- pAbsOrigin, pAbsAngles,
- m_bEnterAnimOn, m_bExitAnimOn,
- m_vecEyeExitEndpoint,
- &m_ViewSmoothingData,
- pFOV );
-}
-
-
-//-----------------------------------------------------------------------------
-// Purpose:
-// Input : pLocalPlayer -
-// pCmd -
-//-----------------------------------------------------------------------------
-void C_PropVehicleChoreoGeneric::UpdateViewAngles( C_BasePlayer *pLocalPlayer, CUserCmd *pCmd )
-{
- int eyeAttachmentIndex = LookupAttachment( "vehicle_driver_eyes" );
- Vector vehicleEyeOrigin;
- QAngle vehicleEyeAngles;
- GetAttachmentLocal( eyeAttachmentIndex, vehicleEyeOrigin, vehicleEyeAngles );
-
- // Limit the yaw.
- float flAngleDiff = AngleDiff( pCmd->viewangles.y, vehicleEyeAngles.y );
- flAngleDiff = clamp( flAngleDiff, (float) m_vehicleView.flYawMin, (float) m_vehicleView.flYawMax );
- pCmd->viewangles.y = vehicleEyeAngles.y + flAngleDiff;
-
- // Limit the pitch -- don't let them look down into the empty pod!
- flAngleDiff = AngleDiff( pCmd->viewangles.x, vehicleEyeAngles.x );
- flAngleDiff = clamp( flAngleDiff, (float) m_vehicleView.flPitchMin, (float) m_vehicleView.flPitchMax );
- pCmd->viewangles.x = vehicleEyeAngles.x + flAngleDiff;
-}
-
-
-//-----------------------------------------------------------------------------
-// Futzes with the clip planes
-//-----------------------------------------------------------------------------
-void C_PropVehicleChoreoGeneric::GetVehicleClipPlanes( float &flZNear, float &flZFar ) const
-{
- // Pod doesn't need to adjust the clip planes.
- //flZNear = 6;
-}
-
-
-//-----------------------------------------------------------------------------
-// Renders hud elements
-//-----------------------------------------------------------------------------
-void C_PropVehicleChoreoGeneric::DrawHudElements( )
-{
-}
-
-
+//========= Copyright Valve Corporation, All rights reserved. ============// +// +// Purpose: +// +//=============================================================================// + +#include "cbase.h" +#include "hud.h" +#include "c_props.h" +#include "iclientvehicle.h" +#include <vgui_controls/Controls.h> +#include <Color.h> +#include "vehicle_choreo_generic_shared.h" +#include "vehicle_viewblend_shared.h" +// NVNT haptic utils +#include "haptics/haptic_utils.h" + +// memdbgon must be the last include file in a .cpp file!!! +#include "tier0/memdbgon.h" + +extern float RemapAngleRange( float startInterval, float endInterval, float value ); + + +#define ROLL_CURVE_ZERO 5 // roll less than this is clamped to zero +#define ROLL_CURVE_LINEAR 45 // roll greater than this is copied out + +#define PITCH_CURVE_ZERO 10 // pitch less than this is clamped to zero +#define PITCH_CURVE_LINEAR 45 // pitch greater than this is copied out + // spline in between + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +class C_PropVehicleChoreoGeneric : public C_DynamicProp, public IClientVehicle +{ + DECLARE_CLASS( C_PropVehicleChoreoGeneric, C_DynamicProp ); + +public: + + DECLARE_CLIENTCLASS(); + DECLARE_DATADESC(); + + C_PropVehicleChoreoGeneric(); + + void PreDataUpdate( DataUpdateType_t updateType ); + void PostDataUpdate( DataUpdateType_t updateType ); + +public: + + // IClientVehicle overrides. + virtual void GetVehicleViewPosition( int nRole, Vector *pOrigin, QAngle *pAngles, float *pFOV = NULL ); + virtual void GetVehicleFOV( float &flFOV ) + { + flFOV = m_flFOV; + } + virtual void DrawHudElements(); + virtual bool IsPassengerUsingStandardWeapons( int nRole = VEHICLE_ROLE_DRIVER ) { return false; } + virtual void UpdateViewAngles( C_BasePlayer *pLocalPlayer, CUserCmd *pCmd ); + virtual C_BaseCombatCharacter *GetPassenger( int nRole ); + virtual int GetPassengerRole( C_BaseCombatCharacter *pPassenger ); + virtual void GetVehicleClipPlanes( float &flZNear, float &flZFar ) const; + virtual int GetPrimaryAmmoType() const { return -1; } + virtual int GetPrimaryAmmoCount() const { return -1; } + virtual int GetPrimaryAmmoClip() const { return -1; } + virtual bool PrimaryAmmoUsesClips() const { return false; } + virtual int GetJoystickResponseCurve() const { return 0; } + +public: + + // C_BaseEntity overrides. + virtual IClientVehicle* GetClientVehicle() { return this; } + virtual C_BaseEntity *GetVehicleEnt() { return this; } + virtual void SetupMove( C_BasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move ) {} + virtual void ProcessMovement( C_BasePlayer *pPlayer, CMoveData *pMoveData ) {} + virtual void FinishMove( C_BasePlayer *player, CUserCmd *ucmd, CMoveData *move ) {} + virtual bool IsPredicted() const { return false; } + virtual void ItemPostFrame( C_BasePlayer *pPlayer ) {} + virtual bool IsSelfAnimating() { return false; }; + +private: + + CHandle<C_BasePlayer> m_hPlayer; + CHandle<C_BasePlayer> m_hPrevPlayer; + + bool m_bEnterAnimOn; + bool m_bExitAnimOn; + Vector m_vecEyeExitEndpoint; + float m_flFOV; // The current FOV (changes during entry/exit anims). + + ViewSmoothingData_t m_ViewSmoothingData; + + vehicleview_t m_vehicleView; +}; + +IMPLEMENT_CLIENTCLASS_DT(C_PropVehicleChoreoGeneric, DT_PropVehicleChoreoGeneric, CPropVehicleChoreoGeneric) + RecvPropEHandle( RECVINFO(m_hPlayer) ), + RecvPropBool( RECVINFO( m_bEnterAnimOn ) ), + RecvPropBool( RECVINFO( m_bExitAnimOn ) ), + RecvPropVector( RECVINFO( m_vecEyeExitEndpoint ) ), + RecvPropBool( RECVINFO( m_vehicleView.bClampEyeAngles ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flPitchCurveZero ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flPitchCurveLinear ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flRollCurveZero ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flRollCurveLinear ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flFOV ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flYawMin ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flYawMax ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flPitchMin ) ), + RecvPropFloat( RECVINFO( m_vehicleView.flPitchMax ) ), +END_RECV_TABLE() + + +BEGIN_DATADESC( C_PropVehicleChoreoGeneric ) + DEFINE_EMBEDDED( m_ViewSmoothingData ), +END_DATADESC() + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_PropVehicleChoreoGeneric::C_PropVehicleChoreoGeneric( void ) +{ + memset( &m_ViewSmoothingData, 0, sizeof( m_ViewSmoothingData ) ); + + m_ViewSmoothingData.pVehicle = this; + m_ViewSmoothingData.flPitchCurveZero = PITCH_CURVE_ZERO; + m_ViewSmoothingData.flPitchCurveLinear = PITCH_CURVE_LINEAR; + m_ViewSmoothingData.flRollCurveZero = ROLL_CURVE_ZERO; + m_ViewSmoothingData.flRollCurveLinear = ROLL_CURVE_LINEAR; + m_flFOV = 0; +} + +//----------------------------------------------------------------------------- +// Purpose: +// Input : updateType - +//----------------------------------------------------------------------------- +void C_PropVehicleChoreoGeneric::PreDataUpdate( DataUpdateType_t updateType ) +{ + BaseClass::PreDataUpdate( updateType ); + + m_hPrevPlayer = m_hPlayer; +} + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +void C_PropVehicleChoreoGeneric::PostDataUpdate( DataUpdateType_t updateType ) +{ + BaseClass::PostDataUpdate( updateType ); + + // NVNT if we have entered this vehicle notify the haptics system + if ( m_hPlayer && !m_hPrevPlayer ) + { +#if defined( WIN32 ) && !defined( _X360 ) + //They have just entered the vehicle. + HapticsEnteredVehicle(this,m_hPlayer); +#endif + } + + if ( !m_hPlayer && m_hPrevPlayer ) + { +#if defined( WIN32 ) && !defined( _X360 ) + // NVNT we have just exited this vehicle so we notify the haptics system + HapticsExitedVehicle(this,m_hPrevPlayer); +#endif + // They have just exited the vehicle. + // Sometimes we never reach the end of our exit anim, such as if the + // animation doesn't have fadeout 0 specified in the QC, so we fail to + // catch it in VehicleViewSmoothing. Catch it here instead. + m_ViewSmoothingData.bWasRunningAnim = false; + + //There's no need to "smooth" the view when leaving the vehicle so just set this here so the stair code doesn't get confused. + m_hPrevPlayer->SetOldPlayerZ( m_hPrevPlayer->GetLocalOrigin().z ); + } + + m_ViewSmoothingData.bClampEyeAngles = m_vehicleView.bClampEyeAngles; + m_ViewSmoothingData.flFOV = m_vehicleView.flFOV; +} + + +//----------------------------------------------------------------------------- +// Purpose: +//----------------------------------------------------------------------------- +C_BaseCombatCharacter *C_PropVehicleChoreoGeneric::GetPassenger( int nRole ) +{ + if ( nRole == VEHICLE_ROLE_DRIVER ) + return m_hPlayer.Get(); + + return NULL; +} + + +//----------------------------------------------------------------------------- +// Returns the role of the passenger +//----------------------------------------------------------------------------- +int C_PropVehicleChoreoGeneric::GetPassengerRole( C_BaseCombatCharacter *pPassenger ) +{ + if ( m_hPlayer.Get() == pPassenger ) + return VEHICLE_ROLE_DRIVER; + + return VEHICLE_ROLE_NONE; +} + + +//----------------------------------------------------------------------------- +// Purpose: Modify the player view/camera while in a vehicle +//----------------------------------------------------------------------------- +void C_PropVehicleChoreoGeneric::GetVehicleViewPosition( int nRole, Vector *pAbsOrigin, QAngle *pAbsAngles, float *pFOV /*=NULL*/ ) +{ + SharedVehicleViewSmoothing( m_hPlayer, + pAbsOrigin, pAbsAngles, + m_bEnterAnimOn, m_bExitAnimOn, + m_vecEyeExitEndpoint, + &m_ViewSmoothingData, + pFOV ); +} + + +//----------------------------------------------------------------------------- +// Purpose: +// Input : pLocalPlayer - +// pCmd - +//----------------------------------------------------------------------------- +void C_PropVehicleChoreoGeneric::UpdateViewAngles( C_BasePlayer *pLocalPlayer, CUserCmd *pCmd ) +{ + int eyeAttachmentIndex = LookupAttachment( "vehicle_driver_eyes" ); + Vector vehicleEyeOrigin; + QAngle vehicleEyeAngles; + GetAttachmentLocal( eyeAttachmentIndex, vehicleEyeOrigin, vehicleEyeAngles ); + + // Limit the yaw. + float flAngleDiff = AngleDiff( pCmd->viewangles.y, vehicleEyeAngles.y ); + flAngleDiff = clamp( flAngleDiff, (float) m_vehicleView.flYawMin, (float) m_vehicleView.flYawMax ); + pCmd->viewangles.y = vehicleEyeAngles.y + flAngleDiff; + + // Limit the pitch -- don't let them look down into the empty pod! + flAngleDiff = AngleDiff( pCmd->viewangles.x, vehicleEyeAngles.x ); + flAngleDiff = clamp( flAngleDiff, (float) m_vehicleView.flPitchMin, (float) m_vehicleView.flPitchMax ); + pCmd->viewangles.x = vehicleEyeAngles.x + flAngleDiff; +} + + +//----------------------------------------------------------------------------- +// Futzes with the clip planes +//----------------------------------------------------------------------------- +void C_PropVehicleChoreoGeneric::GetVehicleClipPlanes( float &flZNear, float &flZFar ) const +{ + // Pod doesn't need to adjust the clip planes. + //flZNear = 6; +} + + +//----------------------------------------------------------------------------- +// Renders hud elements +//----------------------------------------------------------------------------- +void C_PropVehicleChoreoGeneric::DrawHudElements( ) +{ +} + + |