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.
90 lines
3.1 KiB
90 lines
3.1 KiB
5 years ago
|
//========= 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 );
|
||
|
}
|
||
|
}
|
||
|
|