//----------------------------------------------------------------------------- // Purpose: Overridden to allow players to run faster than the maxspeed //----------------------------------------------------------------------------- void CTFGameMovement::ProcessMovement( CBasePlayer *pBasePlayer, CMoveData *pMove ) { // Verify data. Assert( pBasePlayer ); Assert( pMove ); if ( !pBasePlayer || !pMove ) return; // Reset point contents for water check. ResetGetPointContentsCache(); // Cropping movement speed scales mv->m_fForwardSpeed etc. globally // Once we crop, we don't want to recursively crop again, so we set the crop // flag globally here once per usercmd cycle. m_iSpeedCropped = SPEED_CROPPED_RESET; // Get the current TF player. m_pTFPlayer = ToTFPlayer( pBasePlayer ); player = m_pTFPlayer; mv = pMove; // The max speed is currently set to the scout - if this changes we need to change this! mv->m_flMaxSpeed = TF_MAX_SPEED; /*tf_maxspeed.GetFloat();*/ // Run the command. PlayerMove(); FinishMove(); }
void CBPGameMovement::ProcessMovement( CBasePlayer *pPlayer, CMoveData *pMove ) { Assert( pMove && pPlayer ); float flStoreFrametime = gpGlobals->frametime; //!!HACK HACK: Adrian - slow down all player movement by this factor. //!!Blame Yahn for this one. gpGlobals->frametime *= pPlayer->GetLaggedMovementValue(); ResetGetPointContentsCache(); Assert( player == pPlayer ); player = pPlayer; mv = pMove; bpmv = (CBPMoveData*) pMove ; mv->m_flMaxSpeed = pPlayer->GetPlayerMaxSpeed(); // Add trigger to history for interp stuff m_flInterpLTrigger.AddToTail( float_time( bpmv->m_flLTrigger, gpGlobals->curtime ) ); m_flInterpRTrigger.AddToTail( float_time( bpmv->m_flRTrigger, gpGlobals->curtime ) ); m_flLTriggerAvg = 0; for ( int i = 0; i < m_flInterpLTrigger.Count(); i++ ) m_flLTriggerAvg += m_flInterpLTrigger[i].m_flValue; m_flLTriggerAvg /= m_flInterpLTrigger.Count(); m_flLTriggerDiff = bpmv->m_flLTrigger - m_flLTriggerAvg; //DevMsg("Diff = %.2f - %.2f = %.2f\n",bpmv->m_flLTrigger,lDiff, m_flLTriggerDiff,m_flLTriggerDiff); m_flRTriggerAvg = 0; for ( int i = 0; i < m_flInterpRTrigger.Count(); i++ ) m_flRTriggerAvg += m_flInterpRTrigger[i].m_flValue; m_flRTriggerAvg /= m_flInterpRTrigger.Count(); m_flRTriggerDiff = bpmv->m_flRTrigger - m_flRTriggerAvg; int iCount = m_flInterpLTrigger.Count(); for ( int i = iCount-1; i >= 0; i-- ) { if ( m_flInterpLTrigger[i].m_flTime < gpGlobals->curtime-0.15 ) m_flInterpLTrigger.Remove(i); } iCount = m_flInterpRTrigger.Count(); for ( int i = iCount-1; i >= 0; i-- ) { if ( m_flInterpRTrigger[i].m_flTime < gpGlobals->curtime-0.15 ) m_flInterpRTrigger.Remove(i); } DiffPrint( "start %f %f %f", mv->GetAbsOrigin().x, mv->GetAbsOrigin().y, mv->GetAbsOrigin().z ); // Run the command. PlayerMove(); FinishMove(); DiffPrint( "end %f %f %f", mv->GetAbsOrigin().x, mv->GetAbsOrigin().y, mv->GetAbsOrigin().z ); //This is probably not needed, but just in case. gpGlobals->frametime = flStoreFrametime; }