//----------------------------------------------------------------------------- // 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 ); } }