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.
89 lines
3.1 KiB
89 lines
3.1 KiB
//========= Copyright Valve Corporation, All rights reserved. ============// |
|
// |
|
// Purpose: |
|
// |
|
// $NoKeywords: $ |
|
//=============================================================================// |
|
#include "cbase.h" |
|
#include "C_BaseFourWheelVehicle.h" |
|
|
|
IMPLEMENT_CLIENTCLASS_DT(C_BaseTFFourWheelVehicle, DT_BaseTFFourWheelVehicle, CBaseTFFourWheelVehicle) |
|
RecvPropFloat( RECVINFO( m_flDeployFinishTime ) ), |
|
RecvPropInt( RECVINFO( m_eDeployMode ) ), |
|
RecvPropInt( RECVINFO( m_bBoostUpgrade ) ), |
|
RecvPropInt( RECVINFO( m_nBoostTimeLeft ) ), |
|
END_RECV_TABLE() |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
C_BaseTFFourWheelVehicle::C_BaseTFFourWheelVehicle() |
|
{ |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
float C_BaseTFFourWheelVehicle::GetDeployFinishTime() const |
|
{ |
|
return m_flDeployFinishTime; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
VehicleModeDeploy_e C_BaseTFFourWheelVehicle::GetVehicleModeDeploy() const |
|
{ |
|
return m_eDeployMode; |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Purpose: |
|
//----------------------------------------------------------------------------- |
|
void C_BaseTFFourWheelVehicle::OnDataChanged( DataUpdateType_t updateType ) |
|
{ |
|
BaseClass::OnDataChanged( updateType ); |
|
|
|
if ( updateType == DATA_UPDATE_CREATED ) |
|
{ |
|
// Start thinking (Baseclass stops it) |
|
ClientThinkList()->SetNextClientThink( GetClientHandle(), CLIENT_THINK_ALWAYS ); |
|
} |
|
} |
|
|
|
//----------------------------------------------------------------------------- |
|
// Restricts the view within a range of the center... |
|
//----------------------------------------------------------------------------- |
|
void C_BaseTFFourWheelVehicle::RestrictView( int nRole, float flMinYaw, float flMaxYaw, QAngle &vecViewAngles ) |
|
{ |
|
Assert( nRole >= 0 ); |
|
Vector vehicleEyeOrigin; |
|
QAngle vehicleEyeAngles; |
|
GetRoleViewPosition( nRole, &vehicleEyeOrigin, &vehicleEyeAngles ); |
|
|
|
// Confine the view to the appropriate yaw range... |
|
float flCenterYaw = vehicleEyeAngles[YAW]; |
|
|
|
// View angles are dealt with in absolute terms here... |
|
float flAngleDiff = AngleDiff( vecViewAngles[YAW], flCenterYaw ); |
|
|
|
// Here, we must clamp to the cone... |
|
if (flAngleDiff < flMinYaw) |
|
vecViewAngles[YAW] = anglemod(flCenterYaw + flMinYaw); |
|
else if (flAngleDiff > flMaxYaw) |
|
vecViewAngles[YAW] = anglemod(flCenterYaw + flMaxYaw); |
|
} |
|
|
|
|
|
//----------------------------------------------------------------------------- |
|
// Clamps the view angles while driving the vehicle |
|
//----------------------------------------------------------------------------- |
|
void C_BaseTFFourWheelVehicle::UpdateViewAngles( C_BasePlayer *pLocalPlayer, CUserCmd *pCmd ) |
|
{ |
|
int nRole = GetPassengerRole( pLocalPlayer ); |
|
if ( nRole != VEHICLE_ROLE_DRIVER ) |
|
{ |
|
RestrictView( nRole, -90, 90, pCmd->viewangles ); |
|
} |
|
} |
|
|
|
|