Skip to content

Motion · Simulation Types

Baseline: OverAnim 0.1.0 Beta · Unreal Engine 5.8
Headers: OverAnimation/Runtime/OverAnimSimulationTypes.h, OverAnimation/Runtime/OverAnimMotionSignalProfile.h, OverAnimation/Runtime/OverAnimMotionPhaseAnalyzer.h

This page documents the SimulationSettings and MotionSignalSettings structures of UOverAnimMeshDeformer field by field. See Signal · Impact Types for the output format of analyzer-generated Signals and Response Types for using response stages.

FOverAnimSimulationSettings

Details UI Name C++ Property Default · Range Runtime Effect
Fixed Rate FixedRateHz 60 Hz, 15..240 Determines the fixed simulation delta. Invalid values are internally sanitized to 60 Hz.
Max Substeps MaxSubsteps 4, 1..16 Maximum number of fixed steps performed per frame.
Max Accumulated Time MaxAccumulatedTime 1/15 s, 0..0.25 Limits accumulated time retained for catch-up. The actual value is clamped to the range supported by fixed delta and max substeps.
Maximum Continuous Pose Gap MaximumContinuousPoseGap 0.5 s, 0.1..2 Maximum sample interval accepted as a continuous pose source. A larger gap requests source-motion and dynamic-history resets when Reset On Discontinuity is enabled.
Reset On Discontinuity bResetOnDiscontinuity true Resets history and dynamic state on teleport, pose cut, or stale source gap.
Component Teleport Distance Threshold ComponentTeleportDistanceThreshold 300 cm, 10+ Component-transform movement beyond this value is a discontinuity.
Component Teleport Rotation Threshold ComponentTeleportRotationThreshold 150 deg, 1..180 Component-rotation discontinuity threshold.
Pose Distance Threshold Ratio PoseDistanceThresholdRatio 0.75, 0.1..5 Multiplied by the mesh sphere radius to calculate pose-discontinuity distance.
Minimum Pose Distance Threshold MinimumPoseDistanceThreshold 50 cm, 10+ Lower bound for the pose-distance discontinuity threshold.
Pose Rotation Threshold PoseRotationThreshold 150 deg, 1..180 Pose-rotation discontinuity threshold.
Source Motion Prediction Threshold Scale SourceMotionPredictionThresholdScale 0.25, 0.05..1 Ratio for the stricter source-motion error threshold used to suppress derived velocity/acceleration.
Dynamic History Cut Threshold Scale DynamicHistoryCutThresholdScale 0.5, 0.1..1 Ratio for the prediction-error threshold that clears Spring/Follow Through history.

When bResetOnDiscontinuity is false, gaps and prediction errors do not suppress source motion or reset dynamic history. Pose-source gap resets use MaximumContinuousPoseGap, but consumers still use sanitized MaxAccumulatedTime to decide whether a pose snapshot is stale.

C++ Simulation Helper Contracts

The following FOverAnimSimulationSettings helpers are C++ functions, not Blueprint nodes. They return sanitized calculations without modifying settings.

C++ Declaration Return Input · Boundary Contract
float GetFixedDeltaSeconds() const Fixed-step delta in seconds Reciprocal of FixedRateHz, clamped to 15..240 Hz when finite, or using 60 Hz when non-finite.
int32 GetSanitizedMaxSubsteps() const 1..16 step count Clamps MaxSubsteps to that range.
float GetSanitizedMaxAccumulatedTime() const Allowed accumulated time Clamps the requested value from one fixed delta through fixed delta × sanitized max substeps. Uses the upper bound when the request is non-finite.
float GetMaximumContinuousPoseGap() const Allowed continuous pose gap Clamps a finite request to 0.1..2 s; uses 0.5 s when non-finite.
double GetEarliestAllowedFixedTime(double CurrentFrameTimeSeconds) const Earliest allowed fixed time Current time minus sanitized accumulated time when finite; otherwise 0.0.
float CalculateFrameInterpolationAlpha(double SampleTimeSeconds, double PreviousTimeSeconds, double CurrentTimeSeconds) const 0..1 frame-interpolation alpha Returns 1 if any time is non-finite or frame duration is not positive. Otherwise returns the sample's clamped position within the frame.
float CalculateRenderInterpolationAlpha(double CurrentFrameTimeSeconds, double LastFixedTimeSeconds) const 0..1 render-interpolation alpha Returns 0 if a time or fixed delta is invalid. Otherwise divides elapsed time since the last fixed step by fixed delta and clamps it.
bool ShouldResetForPoseSourceGap(double PreviousSampleTimeSeconds, double CurrentSampleTimeSeconds) const Whether to reset for a source gap true only when bResetOnDiscontinuity is true, both times are finite and increasing, and the gap exceeds GetMaximumContinuousPoseGap().
bool IsPoseSampleStale(double ConsumerTimeSeconds, double SampleTimeSeconds) const Whether the sample is stale for the consumer true only when both times are finite and sample age exceeds sanitized accumulated time.

Discontinuity Threshold · Decision Helpers

FOverAnimSourceMotionDiscontinuityMetrics is the C++ input structure for the two decision functions below. Its three translation values are in cm and three rotation values are in degrees; all must be calculated from the same pose transition.

Field Meaning
PositionPredictionError, RotationPredictionErrorDegrees Magnitude by which current source motion differs from its prediction
CurrentTranslationDistance, PreviousTranslationDistance Translation distance of the current and previous transitions
CurrentRotationDistanceDegrees, PreviousRotationDistanceDegrees Rotation distance of the current and previous transitions
C++ Declaration Return Calculation Contract
float GetComponentTeleportDistanceThreshold() const Threshold in cm Non-finite values use 300; otherwise minimum 10 cm.
float GetComponentTeleportRotationThreshold() const Threshold in degrees Non-finite values use 150; otherwise clamped to 1..180.
float GetPoseDistanceThreshold(float MeshSphereRadius) const Threshold in cm max(sanitized MinimumPoseDistanceThreshold, MeshSphereRadius × sanitized PoseDistanceThresholdRatio). Default fallback is 50 cm, ratio fallback is 0.75.
float GetPoseRotationThreshold() const Threshold in degrees Non-finite values use 150; otherwise clamped to 1..180.
float GetSourceMotionPositionErrorThreshold(float MeshSphereRadius) const Threshold in cm Pose-distance threshold multiplied by sanitized SourceMotionPredictionThresholdScale, with a minimum of 2.5 cm.
float GetSourceMotionRotationErrorThreshold() const Threshold in degrees Pose-rotation threshold multiplied by sanitized prediction scale, with a minimum of 5 deg.
float GetDynamicHistoryPositionErrorThreshold(float MeshSphereRadius) const Threshold in cm Greater of the source-motion threshold and pose-distance threshold multiplied by sanitized DynamicHistoryCutThresholdScale.
float GetDynamicHistoryRotationErrorThreshold() const Threshold in degrees Greater of the source-motion threshold and pose-rotation threshold multiplied by sanitized dynamic-history scale.
bool ShouldSuppressSourceMotion(const FOverAnimSourceMotionDiscontinuityMetrics& Metrics, float MeshSphereRadius) const Whether to suppress derived source motion true when reset is enabled, prediction error exceeds the source-motion threshold, and current translation or rotation change exceeds its previous change by at least threshold × 0.25.
bool ShouldResetDynamicHistory(const FOverAnimSourceMotionDiscontinuityMetrics& Metrics, float MeshSphereRadius) const Whether to reset Spring/Follow Through history Performs the same comparison with the larger dynamic-history threshold. Always false when bResetOnDiscontinuity is false.

Motion Direction · Detection Enums

Enum Value Meaning
EOverAnimVerticalImpactDirectionMode WorldUp, OwnerUp, ComponentUp Source of the up axis for vertical-impact normal/direction.
OppositeVelocity Uses the opposite of current velocity. Cannot create a direction when velocity is 0.
EOverAnimMotionDirectionMode WorldUp/Down, OwnerUp/Down, ComponentUp/Down Direction based on a fixed up/down axis.
Velocity, OppositeVelocity, PreviousVelocity, OppositePreviousVelocity, VelocityChange, OppositeVelocityChange Direction based on actor-motion vectors. No usable direction exists if required current/previous samples are unavailable.
EOverAnimMotionPhaseInputSource RootRelativeAnimationPose Uses only the Skeleton-root-relative final animation pose for automatic stages. Excludes actor travel/extracted root motion.
FullFinalPoseMotion Uses absolute component-space final-pose motion for automatic stages.
EOverAnimMotionPhaseActivationScope Automatic Legacy compatibility value that preserves Montage-boundary behavior of older assets.
ContinuousAnimation Analyzes automatic stages in every final animation pose.
AuthoredActionWindow Analyzes only inside a Montage boundary or explicit action window.
EOverAnimAutomaticStageTimeBasis ActionTempoRelative Scales stage guards, response timing, and optional delay by measured action tempo.
FixedSeconds Keeps stage guards and timing in authored seconds.
EOverAnimMotionPhaseSensitivity Conservative, Balanced, Sensitive, Custom Presets jointly configure EntryEnergy, PreparationEntryEnergy, ActionEnergy, and SettleEnergy. It is Custom when any threshold differs from a preset.

FOverAnimMotionPhaseDetectionSettings

Basic Stage Contract

Details UI Name C++ Property Default · Range Effect · Display Condition
Motion Input InputSource RootRelativeAnimationPose Motion source for automatic stages. Does not apply to other Region motion Signals.
Analyze Automatic Stages ActivationScope ContinuousAnimation Selects whether the automatic analyzer always runs or only within Montage/explicit action windows. Does not suppress Gameplay, Notify, or other motion Signals.
Use Montage Action Boundaries bUseMontageActionBoundaries true Opens a new action cycle at Montage start. Interrupted Montages close at blend-out, while normal blend-out is analyzed through Montage completion to preserve Recoil/Settle.
Treat Montage Parts as Separate Actions bTreatMontageSectionsAsSeparateActions false Displayed when the previous boolean is true. Treats Section or embedded Animation Sequence transitions as new action cycles.
Rebase On Anim State Transitions bRebaseOnAnimStateTransitions true Rebases derivatives during and after Anim Blueprint state crossfades so they are not detected as sudden Region motion. Does not reset other Signals or deformation simulation.
Stage Timing TimeBasis ActionTempoRelative Selects detected-tempo or fixed-seconds timing basis.
Detection Sensitivity Sensitivity Balanced Built-in threshold preset or Custom state.
Start Motion Energy EntryEnergy 0.12, 0..1 Normalized energy that leaves Starting Pose. Displayed for expert tuning.
Anticipation Entry Energy PreparationEntryEnergy 0.10, 0..1 Acceleration evidence that can open Anticipation before visible action.
Action Entry Energy ActionEnergy 0.40, 0..1 Energy that commits Anticipation to Action.
Settle Entry Energy SettleEnergy 0.06, 0..1 Energy for entering Settle Pose. Must be less than EntryEnergy.
Maximum Anticipation Prediction MaximumPredictionLeadTime 0.10 s, 0..0.25 Maximum time by which causal prediction can advance Anticipation.
Infer Counter-Motion Anticipation bInferOppositeActionAxisFromPreparation true Treats preparation as counter-motion and predicts the opposite action axis.
Maximum Anticipation Duration MaximumAnticipationDuration 0.10 s, 0.01+ Maximum Anticipation time without Action; afterward it cancels to Settle.
Settle Pose Duration SettleDuration 0.08 s, 0.01+ Quiet time required before returning to Starting Pose.
Starting Pose Confirmation StartingPoseConfirmationTime 0.15 s, 0..0.5 Continuous quiet time required to re-arm the next action cycle.
Starting Pose Return Tolerance StartingPoseReturnTolerance 0.35, 0..1 Root-relative Region motion must return within this fraction of the cycle's maximum movement from the starting pose to close the cycle. 1 disables the positional-return guard.
Show Expert Detection Tuning bShowAdvancedTuning false Display condition for the expert fields below. Does not change visual peak amount.

Expert Detection Tuning

Details UI Name C++ Property Default · Range Effect
Action Commit Direction ActionCommitDirectionDotThreshold 0, -1..1 Minimum dot product between the predicted counter-motion axis and measured motion. Displayed only when bInferOppositeActionAxisFromPreparation is also true.
Detect Chained Actions During Recovery bDetectChainedActionsDuringRecovery false Allows a new cycle when recovery rises again before Starting Pose.
Build / Recovery Trend Threshold TrendThreshold 0.40, 0+ Threshold separating build and recovery in the normalized energy trend.
Trend Smoothing TrendSmoothingRate 14, 0+ Exponential smoothing rate for the energy trend. 0 uses the raw trend.
Adaptive Trend Response AdaptiveTrendResponse 2, 0..4 Increases trend-filter responsiveness during decisive motion.
Anticipation Confirmation Time AnticipationConfirmationTime 0.025 s, 0..0.05 Onset-confirmation time that filters isolated acceleration spikes.
Anticipation Cancellation Time AnticipationCancellationTime 0.04 s, 0..0.20 Time after which Anticipation without evidence cancels to Settle.
Overshoot Peak Drop PeakDropEnergy 0.06, 0..1 Enters Overshoot after energy falls this far from the Action peak.
Recoil Direction Threshold ReversalDotThreshold -0.10, -1..1 Identifies Recoil when the dot product with the action axis is at or below this value.
Minimum Stage Duration MinimumPhaseDuration 0.025 s, 0+ Minimum time between consecutive stage transitions.
Angular Action Energy Weight AngularActionWeight 0.65, 0..2 Contribution of angular speed to Action Energy.
Linear Anticipation Energy Weight LinearPreparationWeight 0.75, 0..2 Contribution of linear acceleration to Anticipation Energy.
Angular Anticipation Energy Weight AngularPreparationWeight 0.65, 0..2 Contribution of angular acceleration to Anticipation Energy.
Direction Conflict Threshold DirectionConflictDotThreshold -0.25, -1..1 Directional evidence more opposite than this value is excluded from the action-axis average.
Default Action Stroke Duration DefaultActionTempoSeconds 0.10 s, 0.01..1 Fallback duration from Action commitment to peak when no learned tempo exists.
Minimum / Maximum Action Stroke Duration MinimumActionTempoSeconds, MaximumActionTempoSeconds 0.05 / 0.25 s, 0.01..1 Clamp range for measured action tempo. Default must lie between the two.
Action Stroke Learning Rate ActionTempoLearningRate 0.35, 0..1 Blend amount by which an observed Action peak updates expected tempo for the next cycle.
Minimum Anticipation Strength MinimumAnticipationStrength 0.15, 0..1 Minimum strength output during Anticipation.
Recovery Peak Retention RecoveryPeakRetention 0.20, 0..1 Minimum fraction of the cycle peak retained during Overshoot/Recoil.

IsValid() jointly checks SettleEnergy < EntryEnergy < ActionEnergy, PreparationEntryEnergy < ActionEnergy, min/default/max action-tempo order, and all duration, range, and finite-value requirements.

Automatic Stage C++ Helper Contracts

C++ Declaration Return · State Change Contract
void ApplySensitivityPreset() Changes the structure's four energy thresholds Writes 0.16 / 0.14 / 0.50 / 0.07 for Conservative, 0.12 / 0.10 / 0.40 / 0.06 for Balanced, or 0.08 / 0.06 / 0.28 / 0.04 for Sensitive, in Entry / PreparationEntry / Action / Settle order. Custom does not change values.
void ClassifySensitivityFromThresholds() Changes only Sensitivity Selects the corresponding preset when all four thresholds approximately match one of the combinations above; otherwise selects Custom. Does not change thresholds.
float ResolveActionTimingScale(float ActionTempoSeconds) const Timing multiplier Returns 1 under FixedSeconds, for non-finite tempo, or for a non-finite/non-positive default tempo. Otherwise clamps input tempo to min/max action tempo and divides it by default tempo.
float ResolveMaximumActionTimingScale() const Maximum possible timing multiplier Calls the resolver above with MaximumActionTempoSeconds.
bool IsValid() const Whether settings are valid Jointly requires the energy ordering, every clamp range, StartingPoseReturnTolerance in 0..1, valid time values, min/default/max action-tempo order, and finite smoothing, weight, retention, and dot values in range.

FOverAnimMotionSignalSettings

Signal Enable Flags

Details UI Name C++ Property Default Effect · Display Condition
Enable Motion Signals bEnableMotionSignals false Master switch for actor motion-generated Signals.
Enable Jump Fall Landing Signals bEnableJumpFallLandingSignals true Allows jump-start, falling, and vertical-impact generation.
Enable Speed Drop Signal bEnableSpeedDropSignal true Allows planar-deceleration episode Signals.
Enable Speed Burst Signal bEnableSpeedBurstSignal false Allows positive planar-acceleration Signals.
Enable Direction Change Signal bEnableDirectionChangeSignal true Allows planar direction-change Signals.
Enable Acceleration Signal bEnableAccelerationSignal false Allows actor-acceleration Signals.
Enable Region Motion Signals bEnableRegionMotionSignals true Master switch for Region-level Signals.
Enable Region Speed / Acceleration / Direction Change / Angular Speed / Tip Speed / Angular Acceleration Signal bEnableRegionSpeedSignal, bEnableRegionAccelerationSignal, bEnableRegionDirectionChangeSignal, bEnableRegionAngularSpeedSignal, bEnableRegionTipSpeedSignal, bEnableRegionAngularAccelerationSignal All false Displayed only when bEnableRegionMotionSignals; each creates its corresponding feature Signal.
Generate Automatic Six-Stage Motion bEnableRegionMotionPhaseSignal false Displayed only when the Region-motion Signal master is enabled. Uses MotionPhaseDetection to create a six-stage Signal.

Signal Names

C++ Property Default Generated For
JumpStartSignalName, FallingSignalName, VerticalImpactSignalName Motion.JumpStart, Motion.Falling, Motion.VerticalImpact Jump/fall/landing
SpeedDropSignalName, SpeedBurstSignalName, DirectionChangeSignalName, AccelerationSignalName Motion.SpeedDrop, Motion.SpeedBurst, Motion.DirectionChange, Motion.Acceleration Actor motion
RegionSpeedSignalName, RegionAccelerationSignalName, RegionDirectionChangeSignalName Motion.Region.Speed, Motion.Region.Acceleration, Motion.Region.DirectionChange Region linear motion
RegionAngularSpeedSignalName, RegionTipSpeedSignalName, RegionAngularAccelerationSignalName Motion.Region.AngularSpeed, Motion.Region.TipSpeed, Motion.Region.AngularAcceleration Region angular/tip motion
RegionMotionPhaseSignalName Motion.Region.Phase Automatic six-stage Signal when bEnableRegionMotionPhaseSignal

Direction Fields

Details UI Name C++ Property Default Scope
Vertical Impact Direction VerticalImpactDirectionMode OwnerUp Vertical impact
Jump Start Direction JumpStartDirectionMode OwnerUp Jump start
Falling Direction FallingDirectionMode Velocity Falling
Speed Drop Direction SpeedDropDirectionMode PreviousVelocity Speed drop
Speed Burst Direction SpeedBurstDirectionMode Velocity Speed burst
Direction Change Direction DirectionChangeDirectionMode VelocityChange Direction change
Acceleration Direction AccelerationDirectionMode VelocityChange Acceleration

Actor and Landing Thresholds

C++ Property Default · Minimum Effect
MinJumpSpeed, MaxJumpSpeed 150 / 1200, 0+ / 1+ Linear-speed range for jump Signal magnitude.
MinFallingSpeed, MaxFallingSpeed, MinFallingMagnitude 80 / 1200 / 0.1, 0+ / 1+ / 0..1 Falling-Signal entry and magnitude range.
MinFallTime, GroundProbeDistance, GroundedVelocityThreshold 0.08 s / 80 / 80, 0+ Airborne time, ground probe, and Grounded-detection thresholds.
MinVerticalImpactSpeed, MaxVerticalImpactSpeed, VerticalImpactVelocityMemory 350 / 1200 / 0.5 s, 0+ / 1+ / 0+ Landing-impact range and recent downward-velocity memory duration.
MinPlanarSpeedDrop, MaxPlanarSpeedDrop 300 / 1000, 0+ / 1+ Deceleration-episode magnitude range.
MinPlanarSpeedBurstAcceleration, MaxPlanarSpeedBurstAcceleration 600 / 6000 cm/s², 0+ / 1+ Positive planar-acceleration burst magnitude range.
SpeedBurstSmoothingRate, SpeedBurstReleaseThresholdRatio 6 / 0.5, 0+ / 0..1 Burst-differentiation smoothing and re-arm release fraction.
MinActorAcceleration, MaxActorAcceleration 600 / 6000 cm/s², 0+ / 1+ Actor-acceleration Signal magnitude range.
SpeedDropAccumulationWindow, SpeedDropSettleTime 0.35 / 0.06 s, 0.01+ / 0+ Speed-drop episode accumulation/finalization timing.
SpeedDropStopSpeed, SpeedDropRecoveryThreshold, SpeedDropRearmSpeedIncrease 25 / 10 / 50 cm/s, 0+ / 0+ / 1+ Stop finalization, recovery finalization, and next-episode re-arm thresholds.
MinDirectionChangeSpeed, MinDirectionChangeAngleDegrees, MaxDirectionChangeAngleDegrees 250 cm/s / 35 / 135 deg, 0+ / 0..180 / 1..180 Speed and angle range for planar-turn Signals.
DirectionChangeAccumulationWindow, MinDirectionChangeSpeedRetentionRatio 0.20 s / 0.65, 0.01+ / 0..1 Turn-accumulation time and speed-retention requirement.
bSuppressLocomotionSignalsAfterCollision, LocomotionCollisionSuppressionWindow true / 0.10 s Briefly suppresses locomotion Signals after an accepted collision. Contact information requires collision submission.

Region Thresholds · Filtering

C++ Property Default · Minimum Effect
MinRegionSpeed, MaxRegionSpeed 100 / 1200, 0+ / 1+ Region linear-speed Signal range.
MinRegionAcceleration, MaxRegionAcceleration 500 / 8000, 0+ / 1+ Region linear-acceleration Signal range.
MinRegionDirectionChangeAngleDegrees, MaxRegionDirectionChangeAngleDegrees 30 / 150 deg, 0..180 / 1..180 Region direction-change range.
MinRegionAngularSpeedDegrees, MaxRegionAngularSpeedDegrees 90 / 1440 deg/s, 0+ / 1+ Region angular-speed range.
MinRegionTipSpeed, MaxRegionTipSpeed 150 / 1800 cm/s, 0+ / 1+ Region tip-speed range.
MinRegionAngularAccelerationDegrees, MaxRegionAngularAccelerationDegrees 720 / 20000 deg/s², 0+ / 1+ Region angular-acceleration range.
RegionVelocitySmoothingRate, RegionAccelerationSmoothingRate 18 / 12, 0+ Linear velocity/acceleration smoothing. 0 uses the raw sample.
RegionAngularVelocitySmoothingRate, RegionTipVelocitySmoothingRate, RegionAngularAccelerationSmoothingRate 18 / 18 / 12, 0+ Angular/tip feature smoothing.
RegionSignalReleaseThresholdRatio 0.75, 0..1 An active sustained Region Signal ends below this fraction of its entry threshold.

Timing · Diagnostics

C++ Property Default · Range Effect
JumpStartCooldown, FallingDebugInterval, VerticalImpactCooldown 0.12 / 0.12 / 0.12 s, 0+ Jump/fall/impact dispatch or diagnostic intervals.
AccelerationCooldown, SpeedDropCooldown, SpeedBurstCooldown, DirectionChangeCooldown 0.08 / 0.12 / 0.08 / 0.12 s, 0+ Actor-motion Signal re-trigger limits.
RegionDirectionChangeCooldown, RegionSignalDebugInterval 0.12 / 0.12 s, 0+ Region-turn re-trigger and diagnostic interval.
bLogGeneratedSignals false Emits generated-Signal logs.
bDrawGeneratedSignals false Enables generated-Signal debug drawing.
DebugDrawDuration, DebugDrawScale 0.75 / 80, 0+ / 1+ Debug-drawing duration and size.

Automatic stage requires separate permission

Even when bEnableRegionMotionPhaseSignal is true, a Response Rule must use Automatic Six-Stage Motion as its Timing Model for the automatic stage to drive the response. Contract validation rejects the route if the module itself does not support automatic stages.

FOverAnimMotionSignalSettings C++ Helper Contracts

All functions below are C++ helpers, not Blueprint nodes. The ResolveFor… family returns a copy without modifying the original, and calculation helpers do not emit Signals.

C++ Declaration Return · State Change Input · Boundary Contract
FOverAnimMotionSignalSettings ResolveForLinearScale(float LinearScale) const Copy of settings with linear scale applied Equivalent to ResolveForLinearScales(LinearScale, LinearScale).
FOverAnimMotionSignalSettings ResolveForLinearScales(float MotionScale, float GroundProbeScale) const Copy of settings Each finite scale has a minimum of 0.01; otherwise it uses 1. MotionScale multiplies all linear thresholds for jump/fall/impact/speed-drop/speed-burst/actor acceleration/direction-change/Region speed, acceleration, tip speed, and debug-draw scale. GroundProbeScale multiplies only GroundProbeDistance. Angles, time, smoothing, and cooldown are unchanged.
static float CalculateExponentialSmoothingAlpha(float SmoothingRate, float DeltaTime) 0..1 alpha Returns 0 when delta is non-finite or not positive; 1 when rate is non-finite or not positive; otherwise 1 - exp(-rate × delta).
static FVector CalculateAngularVelocity(const FQuat& PreviousRotation, const FQuat& CurrentRotation, float DeltaTime) World-space angular velocity in rad/s Returns the zero vector when delta is non-finite/not positive or the rotation-delta axis is 0. Otherwise multiplies the shortest-arc quaternion delta axis by angle/delta.
static float CalculatePositivePlanarSpeedAcceleration(const FVector& PreviousVelocityWS, const FVector& CurrentVelocityWS, float DeltaTime) Positive planar acceleration Uses only the increase in speed magnitude excluding Z. Returns 0 for a non-finite/non-positive delta or deceleration.
static float CalculateFilteredPositivePlanarAcceleration(float PreviousFilteredPlanarSpeed, float CurrentPlanarSpeed, float DeltaTime, float SmoothingRate, float& OutFilteredPlanarSpeed) Positive filtered acceleration; writes next filtered speed to out Sets out to 0 when current speed is non-finite. Returns 0 when previous speed or delta is invalid. Otherwise interpolates previous/current speed with exponential alpha and returns only the increase.

Automatic Motion Analyzer C++ API

This section documents the exported C++ contract in OverAnimMotionPhaseAnalyzer.h. Editor preview state and the runtime Instance Manager are outside the supported surface.

Input and Authored Timing

Type Main Fields · Meaning
FOverAnimPhaseEvidence (OverAnimMotionPhase::FEvidence) Linear/tip/angular/preparation directions, Region axis, MotionPointPosition, ChainExtensionDirection, and a presence flag for each. IsValid() checks vectors for NaN and extension values for finiteness. The former FOverAnimMotionPhaseSpatialEvidence is a compatibility alias for this type.
FOverAnimMotionPhaseAnalyzerInput (OverAnimMotionPhase::FInput) Linear/tip/acceleration/angular/chain-extension energy, spatial evidence, sample time, and positive sample delta. IsValid() checks that every energy and time is finite and delta is positive.
FOverAnimAuthoredMotionPhaseInput (OverAnimMotionPhase::FAuthoredInput) Authored Phase, TimingSource, ActionAxisWS, StageProgress, MotionStrength, sample time, and ActionScopeSerial.
FOverAnimAuthoredMotionPhaseState (OverAnimMotionPhase::FAuthoredState) Retains current/previous Stage, Action-entry Stage, duration/strength, cycle, and scope serial for authored timing. Reset() preserves the cycle ID.

Boundary and Continuity

Type · Value Meaning
EOverAnimMotionPhaseBoundaryRequest::RebasePoseDerivative Preserves Stage state and rebases only the pose-derivative baseline.
ResetForStateTransition Resets analyzer state because of an Anim state transition.
CancelCurrentAction Closes the current action and waits for starting-pose confirmation.
StartNewAction Opens a new explicit action boundary.
FOverAnimMotionPhaseBoundaryQueue::Queue() Queues a lifecycle boundary. If StartNewAction is already pending, a subsequent cancel does not downgrade it.
FOverAnimMotionPhaseBoundaryQueue::QueueTransitionRebase() Queues a transition rebase/reset. Does not overwrite a lifecycle boundary or downgrade ResetForStateTransition to a simple rebase.
OverAnimMotionPhase::ESampleContinuity Classifies source-motion/history continuity as Continuous, RebaseDerivative, or ResetState.

Routing and Update Functions

C++ Declaration Return · Contract
bool DecodeAuthoredStageCurveValue(float CurveValue, EStage& OutStage, float& OutStageProgress) Interprets the integer portion of the curve as Stage and the fractional portion as 0–1 progress. Returns false when no valid stage range can be decoded.
FUpdate Update(const FSettings&, const FInput&, FState&) Updates analyzer state from automatic evidence and returns a snapshot and whether StateUpdate/StateEnd occurred. Input and settings must be valid.
FUpdate UpdateFromAuthoredTiming(const FAuthoredInput&, FAuthoredState&) Updates authored-stage state from curve/marker input. Preserves snapshot TimingSource and authored progress.
FRegionDecision EvaluateDominantRegion(TConstArrayView<FRegionCandidate>, const FSettings&, double EvaluationTimeSeconds, const FRegionSelection& CurrentState, FRegionSelection& OutNextState) Evaluates Action Group candidates and returns selected index, Action ID, and decision reason. Does not modify input state and writes next state to out.
int32 SelectDominantRegion(TConstArrayView<FRegionCandidate>, const FSettings&, double EvaluationTimeSeconds, FRegionSelection& State) Applies the evaluation above to state and returns the selected index or INDEX_NONE.

OverAnimMotionPhase::ERoutePolicy::Compete selects one dominant Region for the Automatic route, while BroadcastSharedPhase shares the Stage on a selected-animation route. ResolveRoutePolicy(), IsAnimationRoutedCandidateEligible(), and ShouldSuspendSelectedRouteState() make these routing decisions without changing state. | float GetRegionVelocitySmoothingAlpha(float DeltaTime) const | Alpha | Passes RegionVelocitySmoothingRate to the exponential helper above. | | float GetRegionAccelerationSmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionAccelerationSmoothingRate. | | float GetRegionAngularVelocitySmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionAngularVelocitySmoothingRate. | | float GetRegionTipVelocitySmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionTipVelocitySmoothingRate. | | float GetRegionAngularAccelerationSmoothingAlpha(float DeltaTime) const | Alpha | Uses RegionAngularAccelerationSmoothingRate. | | float GetRegionSignalReleaseThreshold(float EntryThreshold) const | Release threshold for a sustained Region Signal | Sanitizes entry to a minimum of 0 and clamps finite RegionSignalReleaseThresholdRatio to 0..1. Uses 0.75 when the ratio is non-finite. |