示例#1
0
//-----------------------------------------------------------------------------
// 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();
}
示例#2
0
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;
}