hl2_src-leak-2017/src/game/client/tf2/c_basefourwheelvehicle.cpp

90 lines
3.1 KiB
C++

//========= 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 );
}
}