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