Skip to content

Playback & Blueprint

The deformation runs at play time. The dynamic materials that carry it are created when the game starts, so the effect plays in PIE / Simulate (and, for authoring, in the panel’s Live Preview). Scrubbing the Progress slider in the editor at edit time does not animate the mesh.

There are three ways to drive it: auto-play, the playback API, or setting Progress directly.

The simplest path: set Auto Play on the component and it starts from the top on BeginPlay. Pair it with Loop and Playback Duration for a hands-off looping effect.

Call these from Blueprint or C++:

FunctionWhat it does
PlayFromStart()Start (or restart) from the beginning. BeginPlay calls this when Auto Play is set.
Pause()Freeze in place, keeping the current deformation and expanded bounds.
Resume()Continue from where Pause() left off.
Stop()Halt playback and restore bounds.
SetProgress(float)Scrub directly to a normalized [0..1] position.
GetProgress()Read the current normalized progress.
IsPlaying()Whether the playhead is currently advancing.

SetProgress() lets you drive the journey from anything (a timeline, a gameplay value, player input) instead of the built-in clock.

// Drive the deformation from a gameplay value instead of auto-play.
SplineJuice->SetProgress(FMath::Clamp(ChargeAmount, 0.f, 1.f));

Bind these BlueprintAssignable events to react to the animation lifecycle:

EventFires when
OnPlaybackStartedA from-the-top start (PlayFromStart() or auto-play).
OnPlaybackFinishedOnce, when a non-looping animation reaches the end. Not fired by Stop() or while Loop is on.
OnLoopCompletedEach time a looping animation wraps back to the start.