public override void Process()
        {
            timeTravelAudio?.Process();

            if (Vehicle == null)
            {
                return;
            }
            if (!isTimeTravelling)
            {
                return;
            }
            if (Game.GameTime < gameTimer)
            {
                return;
            }

            switch (currentStep)
            {
            case 0:
                timeTravelAudio.Play(Vehicle);

                // If the current Time Travel mode is Instant
                if (CurrentMode != TimeTravelMode.CutScene)
                {
                    // Have to call SetupJump manually here.
                    TimeHandler.TimeTravelTo(TimeCircuits, DestinationTime);

                    // Set MPHSpeed
                    MPHSpeed = 65;

                    // Stop handling
                    Stop();
                    return;
                }

                TimeCircuits.GetHandler <FireTrailsHandler>().SpawnFireTrails();

                Utils.HideVehicle(Vehicle, true);

                // If the Vehicle is remote controlled or the player is not the one in the driver seat
                if (IsRemoteControlled || Vehicle.GetPedOnSeat(VehicleSeat.Driver) != Game.Player.Character)
                {
                    // Stop remote controlling
                    TimeCircuits.GetHandler <RCHandler>().StopRC();

                    // Add to time travelled list
                    TimeHandler.AddToTimeTravelledList(TimeCircuits);

                    // Reset currentStep + other fields.
                    ResetFields();
                    return;
                }

                gameTimer = Game.GameTime + 4000;

                currentStep++;
                break;

            case 1:
                Game.FadeScreenOut(1000);
                gameTimer = Game.GameTime + 1500;

                currentStep++;
                break;

            case 2:
                TimeHandler.TimeTravelTo(TimeCircuits, DestinationTime);
                TimeCircuits.GetHandler <FireTrailsHandler>().Stop();
                gameTimer = Game.GameTime + 1000;

                currentStep++;
                break;

            case 3:
                Game.FadeScreenIn(1000);
                gameTimer = Game.GameTime + 2000;

                currentStep++;
                break;

            case 4:
                Reenter();
                TimeHandler.AddToTimeTravelledList(TimeCircuits);

                ResetFields();
                break;
            }
        }