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.