Skip to content

UOverAnimComponent: Slow Motion and Pause

Header: OverAnimation/Runtime/OverAnimComponent.h

Details: Slow Motion

UI name C++ property Default / range Visibility condition Effect
Slow-Motion Effect Timing TimeDilationPolicy Keep Effects Synced to Game Time (FollowGameTime) Always FollowGameTime uses dilated game delta. IgnoreTimeDilation removes world/owner time dilation from simulation. DisableDuringSlowMotion returns effects to the source pose when effective time scale falls below the threshold.
Disable Below Time Scale SlowMotionDisableThreshold 0.95 / 0.01–1.0 TimeDilationPolicy == DisableDuringSlowMotion Suppresses effects when world time dilation × Owner Custom Time Dilation is below this value.
Resume Time-Scale Margin SlowMotionResumeHysteresis 0.05 / 0.0–0.5 TimeDilationPolicy == DisableDuringSlowMotion Once suppressed, effects reactivate only at or above Disable Below Time Scale + Margin. Prevents repeated resets near the threshold.
When Slow Motion Disables Effects SlowMotionSilhouettePolicy Return Immediately to Source Pose (ImmediateReset) TimeDilationPolicy == DisableDuringSlowMotion Chooses between an immediate source pose and stopping runtime-response acceptance while blending out.
Return-to-Source Blend Time SlowMotionSilhouetteBlendDuration 0.12 s / minimum 0.0 DisableDuringSlowMotion + BlendToSource Real-time duration for blending the current composed silhouette to the source pose.

Details: Pause

UI name C++ property Default / range Visibility condition Effect
When the Game Is Paused PauseBehavior Freeze Current Silhouette Always FreezeCurrentSilhouette freezes the result. ReturnToSourcePose stops response input and returns to the source pose. FinishExistingEffectsInRealTime stops new input but completes active envelopes, springs, and release motion in real time. Motion and automatic-stage analysis create no new input while paused.
Return-to-Source Behavior PauseReturnPolicy Blend Smoothly to Source Pose (BlendToSource) PauseBehavior == ReturnToSourcePose Chooses an immediate reset or real-time blend for the paused source-pose return.
Pause Return Blend Time PauseReturnBlendDuration 0.12 s / minimum 0.0 ReturnToSourcePose + BlendToSource Real-time duration for blending the current silhouette to the source pose after entering pause.

Policy Enums

Enum Value UI name Meaning
EOverAnimTimeDilationPolicy FollowGameTime Keep Effects Synced to Game Time Uses dilated game delta for simulation, synchronizing slow-motion animation and recovery.
IgnoreTimeDilation Keep Effect Timing in Real Time Removes world/owner time dilation from simulation. Signal motion measurement remains game-time based.
DisableDuringSlowMotion Disable Effects in Slow Motion Returns to the source pose when effective time scale is below the threshold.
EOverAnimSlowMotionSilhouettePolicy ImmediateReset Return Immediately to Source Pose Clears active responses and immediately produces the source pose.
BlendToSource Blend Smoothly to Source Pose Blends out the composed silhouette in real time without accepting new responses.
EOverAnimPauseBehavior FreezeCurrentSilhouette Freeze Current Silhouette Freezes the current result while paused and creates no new motion stages/Signals.
ReturnToSourcePose Return to Source Pose Stops response input while paused and returns to the source pose. PauseReturnPolicy selects the return method.
FinishExistingEffectsInRealTime Finish Existing Effects in Real Time Stops new response input and completes only active envelopes, springs, and release motion in real time.

Blueprint API

Blueprint name C++ declaration Input Return Preconditions, rejection, and state changes
Set Slow-Motion Effect Timing void SetTimeDilationPolicy(EOverAnimTimeDilationPolicy Policy) time-dilation policy enum none Immediately synchronizes runtime-effect state when changed. Selecting DisableDuringSlowMotion immediately applies the current effective time scale and threshold/hysteresis.
Get Slow-Motion Effect Timing EOverAnimTimeDilationPolicy GetTimeDilationPolicy() const none stored policy Does not change state.
Set Slow-Motion Return Behavior void SetSlowMotionSilhouettePolicy(EOverAnimSlowMotionSilhouettePolicy Policy, float BlendDurationSeconds = 0.12f) return policy, blend time none Safely replaces a non-finite or negative duration with 0.0. Immediately synchronizes runtime state when the policy or duration changes.
Get Slow-Motion Return Behavior EOverAnimSlowMotionSilhouettePolicy GetSlowMotionSilhouettePolicy() const none stored policy Does not change state.
Set Pause Behavior void SetPauseBehavior(EOverAnimPauseBehavior Behavior) pause-behavior enum none Immediately synchronizes runtime state when changed. If the current world is paused, response-input permission and silhouette-return state are applied.
Get Pause Behavior EOverAnimPauseBehavior GetPauseBehavior() const none stored behavior Does not change state.
Set Pause Return Behavior void SetPauseReturnPolicy(EOverAnimSlowMotionSilhouettePolicy Policy, float BlendDurationSeconds = 0.12f) return policy, blend time none Safely replaces a non-finite or negative duration with 0.0. Immediately synchronizes runtime state when a value changes.
Get Pause Return Behavior EOverAnimSlowMotionSilhouettePolicy GetPauseReturnPolicy() const none stored policy Does not change state.

C++ Time and Suppression Helpers

The following are static C++ helpers and do not change Component/manager state.

C++ declaration Input Return Validation and calculation
static bool ShouldDisableEffectsForSlowMotion(EOverAnimTimeDilationPolicy Policy, float EffectiveTimeDilation, float DisableThreshold) policy, effective time scale, threshold suppression state Internally calls ResolveSlowMotionSuppressionState with hysteresis 0 and previous suppression state false.
static bool ResolveSlowMotionSuppressionState(EOverAnimTimeDilationPolicy Policy, bool bWasSuppressed, float EffectiveTimeDilation, float DisableThreshold, float ResumeHysteresis) policy, previous state, scale, threshold, margin suppression state Returns false unless the policy is DisableDuringSlowMotion. Safely replaces non-finite time scale with 1.0, and clamps threshold to 0.01–1.0 and hysteresis to 0.0–0.5. New suppression uses scale < threshold; an already suppressed state releases at scale >= min(threshold + hysteresis, 1.0).
static float ResolveSimulationDeltaSeconds(EOverAnimTimeDilationPolicy Policy, float DilatedDeltaSeconds, float EffectiveTimeDilation) policy, dilated delta, effective scale simulation delta seconds Returns 0 when dilated delta is non-finite or <= 0. Returns the valid dilated delta unchanged unless IgnoreTimeDilation. For IgnoreTimeDilation, returns dilated / scale when effective scale is valid and sufficiently large, capped at 0.1 s.
static float ResolvePausedSimulationDeltaSeconds(EOverAnimPauseBehavior Behavior, float RealDeltaSeconds) pause behavior, real-time delta paused simulation delta seconds Returns 0 unless behavior is FinishExistingEffectsInRealTime, or when real delta is non-finite/<=0. Otherwise caps real delta at 0.1 s.

Runtime-State Consequences

  • Are OverAnim Effects Active is true only when the Component and global switches are enabled, slow motion is not suppressing, and a paused world is not using ReturnToSourcePose.
  • Runtime-state transitions clear pending Signals, collision-impact history, and motion-signal state.
  • During slow-motion/pause suppression with BlendToSource, the manager blends out while not accepting responses. ImmediateReset disables runtime effects immediately.
  • In a paused world, FinishExistingEffectsInRealTime advances only active-effect simulation in real time; new runtime Signal input is suspended.