//-----------------------------------------------------------------------------
// Purpose: This is called pre player movement and copies all the data necessary
//          from the player for movement. (Server-side, the client-side version
//          of this code can be found in prediction.cpp.)
//-----------------------------------------------------------------------------
void CTFPlayerMove::SetupMove( CBasePlayer *player, CUserCmd *ucmd, IMoveHelper *pHelper, CMoveData *move )
{
	// Call the default SetupMove code.
	BaseClass::SetupMove( player, ucmd, pHelper, move );

	//
	// Convert to TF2 data.
	//
	CBaseTFPlayer *pTFPlayer = static_cast<CBaseTFPlayer*>( player );
	Assert( pTFPlayer );

	CTFMoveData *pTFMove = static_cast<CTFMoveData*>( move );
	Assert( pTFMove );

	//
	// Player movement data.
	//

	// Copy the position delta.
	pTFMove->m_vecPosDelta = pTFPlayer->m_vecPosDelta;

	// Copy the momentum data.
	pTFMove->m_iMomentumHead = pTFPlayer->m_iMomentumHead;
	for ( int iMomentum = 0; iMomentum < CTFMoveData::MOMENTUM_MAXSIZE; iMomentum++ )
	{
		pTFMove->m_aMomentum[iMomentum] = pTFPlayer->m_aMomentum[iMomentum];
	}

	pTFMove->m_nClassID = pTFPlayer->PlayerClass();

	IVehicle *pVehicle = player->GetVehicle();
	if (!pVehicle)
	{
		// Handle player class specific setup.
		switch( pTFPlayer->PlayerClass() )
		{
		case TFCLASS_RECON: 
			{ 
				SetupMoveRecon( pTFPlayer, ucmd, pHelper, pTFMove ); 
				break; 
			}
		case TFCLASS_COMMANDO: 
			{ 
				SetupMoveCommando( pTFPlayer, ucmd, pHelper, pTFMove ); 
				break;
			}
		default:
			{
	//			pTFMove->m_nClassID = TFCLASS_UNDECIDED;
				break;
			}
		}
	}
	else
	{
		pVehicle->SetupMove( player, ucmd, pHelper, move ); 
	}
}