PlayReverse

method
PlayReverse<public>(): void

Starts or resumes reverse playback of the animation.

Module
/Fortnite.com/Devices
Declared in
animated_mesh_device
Source
fortnite

Used in

# IN THE EDITOR on an Animated Mesh device, then drive its playback from Verse
# with Play / Pause / PlayReverse.
#
# This device turns one Button into a full transport panel for a posed statue,
# a dancing hologram, a swinging gate — any skeletal mesh you drop on the
# Animated Mesh device. First press plays, next pauses, next reverses, and so on.
skel_performer_device := class(creative_device):
Cine.Play()           # roll the sequence forward
Cine.PlayReverse()    # roll it backward
Cine.Stop()           # stop and stay put
# React the moment it finishes (StoppedEvent carries no data):
Cine.StoppedEvent.Subscribe(OnSequenceDone)
# door). The Cinematic Sequence device must be set to *Everyone* for the no-agent
# Play()/PlayReverse() calls used below.
cine_player_device := class(creative_device):

    # The Level Sequence to drive. Author it in Sequencer, then drop it here.
    @editable
    Cine : cinematic_sequence_device = cinematic_sequence_device{}

    # Rolls the sequence forward.
    @editable
    PlayButton : button_device = button_device{}

    # Rolls the sequence backward (a clean rewind, no editor work needed).
    @editable
    RewindButton : button_device = button_device{}

    # Plays a fanfare when the sequence finishes — the payoff of the cinematic.
    # (An Audio Player set to "Heard by Everyone" so the no-agent Play() works.)
    @editable
    Fanfare : audio_player_device = audio_player_device{}

    OnBegin<override>()<suspends> : void =
        PlayButton.InteractedWithEvent.Subscribe(OnPlay)
        RewindButton.InteractedWithEvent.Subscribe(OnRewind)
        # StoppedEvent fires whenever the sequence stops — naturally at the end,
        # or because someone called Stop()/GoToEndAndStop(). It carries no data
        # (an empty tuple), so the handler takes no parameters.
        Cine.StoppedEvent.Subscribe(OnSequenceStopped)

    OnPlay(Presser : agent) : void =
        Print("Cinematic: rolling forward")
        Cine.Play()

    OnRewind(Presser : agent) : void =
        Print("Cinematic: rewinding")
        Cine.PlayReverse()

    # The payoff. Because StoppedEvent fires on EVERY stop, we sound the fanfare
    # whenever the show ends — the cinematic "earns" the reward.
    OnSequenceStopped() : void =
SampleVerse / Vine Attack verse-source
Sleep(0.1)

            DamageVolume.Enable()

            Sleep(2.0)

            Spike.PlayReverse()

            DamageVolume.Disable()

            Sleep(0.75)

            # Hide the Attack and reset
SaveSystem / Player Module verse-source
#Visual.PlayReverse(PlayerAgent)
                #RemoveStat
                <#
                block:
                    loop:
                        Sleep(Stat.StatDegenRate)
                        StatValue := Stat.GetValue()
JoustingGame / Jousting Game Manager verse-source
if (Arena := CurrentArena?):
            Arena.PlayReverse()
            set CurrentArena = false
            set CurrentArenaIndex = -1
        if (Arena := DaySequenceArena?):
            Arena.PlayReverse()
            set DaySequenceArena = false
            set DaySequenceArenaIndex = -1
JoustingGame / Round Controller verse-source
PostMatchState()<suspends>:void =
        if (EnableDebug?):
            Logger.Print("Waiting For Restart State")
        # Close the final round gate doors cinematic
        GateCloseCinematic.PlayReverse()
        RestartGameTimer.Enable()
        RestartGameTimer.Reset()
        RestartGameTimer.Start()
        RestartGameTimer.StartUrgencyModeEvent.Await()
        MatchEndCinematicPlayer.DisableCameraSystem()
        RestartGameTimer.SuccessEvent.Await()
        ResetGame()
        if (EnableDebug?):
            Logger.Print("Game Restarted")
        ChangeState(round_states.PreMatch)
PropSystem / Prop Module verse-source
if (CinematicDevice := PropZone.DataLayerCinematic?):
            CinematicDevice.PlayReverse()
            CinematicDevice.StoppedEvent.Await()
DatalayerSystem / Datalayers Module verse-source
for (CinematicSequence : CinematicSequences):
            # We reverse to re-hide the Datalayer
            CinematicSequence.PlayReverse()

        # Enable the barriers
        for (Barrier : Barriers):
            Barrier.Enable()
        if (DebugMode?) then Logger.Print("{DataLayerName} - Deactivated Data Layer")
        set DataLayerState = false