void CElementRPCs::SetElementVelocity ( NetBitStreamInterface& bitStream ) { // Read out the entity id and the speed ElementID ID; CVector vecVelocity; if ( bitStream.Read ( ID ) && bitStream.Read ( vecVelocity.fX ) && bitStream.Read ( vecVelocity.fY ) && bitStream.Read ( vecVelocity.fZ ) ) { // Grab the entity CClientEntity* pEntity = CElementIDs::GetElement ( ID ); if ( pEntity ) { switch ( pEntity->GetType () ) { case CCLIENTPED: case CCLIENTPLAYER: { CClientPed* pPed = static_cast < CClientPed* > ( pEntity ); pPed->SetMoveSpeed ( vecVelocity ); pPed->ResetInterpolation (); // If local player, reset return position (so we can't warp back if connection fails) if ( pPed->IsLocalPlayer () ) { m_pClientGame->GetNetAPI ()->ResetReturnPosition (); } break; } case CCLIENTVEHICLE: { CClientVehicle* pVehicle = static_cast < CClientVehicle* > ( pEntity ); pVehicle->SetMoveSpeed ( vecVelocity ); break; } case CCLIENTOBJECT: { CClientObject * pObject = static_cast < CClientObject * > ( pEntity ); pObject->SetMoveSpeed ( vecVelocity ); break; } } } } }