//----------------------------------------------------------------------------- // Purpose: Input handling //----------------------------------------------------------------------------- bool C_BaseHLPlayer::CreateMove( float flInputSampleTime, CUserCmd *pCmd ) { bool bResult = BaseClass::CreateMove( flInputSampleTime, pCmd ); if ( !IsInAVehicle() ) { PerformClientSideObstacleAvoidance( TICK_INTERVAL, pCmd ); PerformClientSideNPCSpeedModifiers( TICK_INTERVAL, pCmd ); } return bResult; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBasePlayer::ViewPunch( const QAngle &angleOffset ) { //See if we're suppressing the view punching if ( sv_suppress_viewpunch.GetBool() ) return; // We don't allow view kicks in the vehicle if ( IsInAVehicle() ) return; m_Local.m_vecPunchAngleVel += angleOffset * 20; }
//----------------------------------------------------------------------------- // Purpose: //----------------------------------------------------------------------------- void CBasePlayer::ViewPunch( const QAngle &angleOffset ) { //See if we're suppressing the view punching //VR SOURCE - This would've been simpler than disabling it on every single use if ( true || sv_suppress_viewpunch.GetBool() ) return; // We don't allow view kicks in the vehicle if ( IsInAVehicle() ) return; m_Local.m_vecPunchAngleVel += angleOffset * 20; }
void CSDKPlayer::PreThink(void) { // Riding a vehicle? if ( IsInAVehicle() ) { // make sure we update the client, check for timed damage and update suit even if we are in a vehicle UpdateClientData(); CheckTimeBasedDamage(); // Allow the suit to recharge when in the vehicle. CheckSuitUpdate(); WaterMove(); return; } BaseClass::PreThink(); }
//----------------------------------------------------------------------------- // Purpose: // Output : Returns true on success, false on failure. //----------------------------------------------------------------------------- bool CBasePlayer::UsingStandardWeaponsInVehicle( void ) { Assert( IsInAVehicle() ); #if !defined( CLIENT_DLL ) IServerVehicle *pVehicle = GetVehicle(); #else IClientVehicle *pVehicle = GetVehicle(); #endif Assert( pVehicle ); if ( !pVehicle ) return true; // NOTE: We *have* to do this before ItemPostFrame because ItemPostFrame // may dump us out of the vehicle int nRole = pVehicle->GetPassengerRole( this ); bool bUsingStandardWeapons = pVehicle->IsPassengerUsingStandardWeapons( nRole ); // Fall through and check weapons, etc. if we're using them if (!bUsingStandardWeapons ) return false; return true; }
//----------------------------------------------------------------------------- // Purpose: Called every usercmd by the player PostThink //----------------------------------------------------------------------------- void CBasePlayer::ItemPostFrame() { VPROF( "CBasePlayer::ItemPostFrame" ); // Put viewmodels into basically correct place based on new player origin CalcViewModelView( EyePosition(), EyeAngles() ); // Don't process items while in a vehicle. if ( GetVehicle() ) { #if defined( CLIENT_DLL ) IClientVehicle *pVehicle = GetVehicle(); #else IServerVehicle *pVehicle = GetVehicle(); #endif bool bUsingStandardWeapons = UsingStandardWeaponsInVehicle(); #if defined( CLIENT_DLL ) if ( pVehicle->IsPredicted() ) #endif { pVehicle->ItemPostFrame( this ); } if (!bUsingStandardWeapons || !GetVehicle()) return; } // check if the player is using something if ( m_hUseEntity != NULL ) { #if !defined( CLIENT_DLL ) Assert( !IsInAVehicle() ); ImpulseCommands();// this will call playerUse #endif return; } if ( gpGlobals->curtime < m_flNextAttack ) { if ( GetActiveWeapon() ) { GetActiveWeapon()->ItemBusyFrame(); } } else { if ( GetActiveWeapon() && (!IsInAVehicle() || UsingStandardWeaponsInVehicle()) ) { #if defined( CLIENT_DLL ) // Not predicting this weapon if ( GetActiveWeapon()->IsPredicted() ) #endif { GetActiveWeapon()->ItemPostFrame( ); } } } #if !defined( CLIENT_DLL ) ImpulseCommands(); #else // NOTE: If we ever support full impulse commands on the client, // remove this line and call ImpulseCommands instead. m_nImpulse = 0; #endif }