Skip to content

Response Types

Baseline: OverAnim 0.1.0 Beta · Unreal Engine 5.8
Header: OverAnimation/Runtime/OverAnimResponseTypes.h

A Response is the contract that converts a Signal into a visual result for a specific Bone Group and Module. All route names resolve within the same UOverAnimMeshDeformer.

Core Enums

Enum Value Meaning · compatibility
EOverAnimResponseActivationPolicy Always Allows the route regardless of source/activation window.
AnimNotifyState RequiredNotifyName must match an open Activation Channel.
ActorTag The Owner Actor must have RequiredActorTag.
ManualOnly / MotionOnly / AnimNotifyOnly / GameplayEventOnly Allows only when FOverAnimSignal::Source is respectively Manual / MotionAnalyzer / AnimNotify / GameplayEvent.
EOverAnimResponseMode Pulse (One Shot (Envelope)) Uses an Attack/Hold/Release envelope after one trigger.
Sustained (Follow Active Motion Stages) Continuously tracks an active state or enabled automatic stages.
EOverAnimResponseTimingDriver ExplicitEnvelope Uses the Rule's Envelope. Appropriate for Notify, gameplay, contact, and explicit motion Signals.
AutomaticMotionPhase Uses Six-Stage Motion from a Region Motion snapshot. The Module must support automatic stages.
EOverAnimResponseTimingRole Shape, Volume, Dynamics, Smear Timing role of a module response. Not a directly editable Details field; determined by the module class.
EOverAnimMotionPhaseResponseProfile ModuleDefault, FullCycle, ActionOnly, AnticipationAndAction, RecoveryOnly, Custom Selects automatic-stage coverage. Custom uses the six-stage booleans/amounts below. Starting Pose always releases to the source pose.
EOverAnimMotionPhaseAmountMode AuthoredModuleAmount Uses the module response's authored peak as the stage amount.
ScaleByDetectedMotion Additionally multiplies authored stage amount by analyzer Strength.
EOverAnimMotionPhaseActionBuildMode FollowDetectedStroke Reaches the authored peak at the end of the detected Action stroke. Build ratio 1.0.
EarlyAccent Reaches the peak halfway through the stroke. Build ratio 0.5.
Immediate Uses the peak immediately on entering Action. Build ratio 0.
Custom Uses CustomActionPeakTiming, 0.05–1.0, as the build ratio.
EOverAnimMotionPhaseAnticipationDirection CounterToAction Interprets Anticipation amount with negative polarity opposite the Action.
SameAsAction Interprets Anticipation amount with positive polarity in the Action direction.

EOverAnimMotionPhaseContributionResult (C++ Only)

Return value of FOverAnimMotionPhaseResponseSettings::ResolveContribution(). This C++ enum is not BlueprintType; it indicates how Automatic Six-Stage Motion evaluation should handle the current Response.

Value Resolver state change Output contract
Ignore Does not create or update a request for this Signal. Does not release an existing Sustained Response by itself. Uses initialized OutMagnitudeScale = 0 and OutPolarity = 1. Produced by a missing/invalid Motion Phase, insufficient confidence, a Pulse outside its trigger stage, and similar conditions.
Contribute Creates or updates a Response request for the current stage. OutMagnitudeScale is a non-negative stage amount; OutPolarity is 1 or -1. Recoil is negative; Anticipation is negative or positive according to AnticipationDirection.
Release Releases the target of a Sustained Response toward the source pose. Creates no new visual contribution. Magnitude/polarity are not used for the release decision. May be returned for Stable or transition to a disabled stage.

FOverAnimResponseRule

Details UI name C++ property Default · range Effect · visibility condition
Rule Name RuleName None Rule identifier. Must be unique in the asset.
Enabled bEnabled true Does not route when false.
Signal Name SignalName None Must match FOverAnimSignal::SignalName.
Source Region Filter SourceRegionFilter None None accepts every source Region; otherwise must match the Signal's SourceRegionName.
Bone Group Name BoneGroupName None Target Region GroupName; must be valid.
Module Name ModuleName None Target Module ModuleName; must match an enabled Module in the Group.
Response Set Name ResponseSetName None None imposes no set restriction; otherwise must name an existing enabled ResponseSet.
Activation Policy ActivationPolicy Always Selects whether source, notify channel, or actor tag permits routing.
Required Activation Channel RequiredNotifyName None Shown only for ActivationPolicy == AnimNotifyState; must match an open OverAnim Activation Window channel.
Required Actor Tag RequiredActorTag None Shown only for ActivationPolicy == ActorTag.
Slot Name SlotName None Grouping name for the response slot. Requests in the same slot are resolved together.
Priority Priority 0 Slot-conflict resolution order; larger values win.
Blend Weight BlendWeight 1, 0..1 Ratio used to blend the route result into the slot.
Response Input Mapping Magnitude struct defaults below Maps Signal magnitude or a physical feature to a 0–1 response amount.
Timing Model TimingDriver ExplicitEnvelope MotionPhase is meaningful only for AutomaticMotionPhase.
Response Duration ResponseMode Pulse Selects Pulse or Sustained timing/support scope.
Motion Phase MotionPhase struct defaults below Shown only when TimingDriver == AutomaticMotionPhase.
Envelope Envelope 0.03 / 0.05 / 0.15 s ExplicitEnvelope uses these values directly. AutomaticMotionPhase scales them by analyzed Action timing while stage contribution determines request contribution/release.
Module Response at 100% ModuleParameters instanced struct Must be the response-parameter struct matching the selected Module class. A class mismatch is a contract-validation error.

FOverAnimResponseMagnitudeSettings

UI name C++ property Default · range Effect · visibility condition
Input Source InputSource SignalMagnitude Selects Signal magnitude or a linear/angular/tip motion feature.
Motion Feature Projection MotionFeatureProjection Magnitude Shown when InputSource != SignalMagnitude. Projects a vector to a scalar using signal direction/contact normal.
Measurement Basis MeasurementBasis Auto Shown for LinearSpeed, LinearAcceleration, and TipSpeed. Normalizes linear features by character/region scale.
Input Range InputMagnitudeRange (0, 1) Raw range of the selected input. Unit follows Input Source.
Output Range OutputMagnitudeRange (0, 1) Response-magnitude range produced by mapping.
Clamp Magnitude bClampMagnitude true Clamps values outside Input Range to Output Range endpoints.

EOverAnimResponseMagnitudeSource values are SignalMagnitude, LinearSpeed, LinearAcceleration, AngularSpeed, AngularAcceleration, and TipSpeed. EOverAnimMotionFeatureProjection provides Magnitude and along/opposite/absolute projections for Signal Direction and Contact Normal. Selecting such a projection on a Signal without the required direction/normal cannot produce a usable feature.

FOverAnimResponseEnvelopeSettings

FOverAnimResponseEnvelopeSettings is the time envelope owned by FOverAnimResponseRule::Envelope. TimingDriver == ExplicitEnvelope uses values directly; AutomaticMotionPhase uses a resolved envelope whose three times are adjusted by analyzed Action timing scale.

Details UI name C++ property Default · unit · range Effect
Attack Time AttackTime 0.03 s, 0+ Rise time of a Pulse envelope.
Hold Time HoldTime 0.05 s, 0+ Time held at peak.
Release Time ReleaseTime 0.15 s, 0+ Time returning to source pose.

FOverAnimMotionPhaseResponseSettings

Details UI name C++ property Default · range Effect · visibility condition
Stage Coverage Profile ModuleDefault Selects the automatic-stage combination. Pulse uses only One-Shot Trigger Stage.
Minimum Stage Confidence MinimumConfidence 0.15, 0..1 Snapshots less certain than this are not passed to the module.
Stage Amount Source AmountMode AuthoredModuleAmount Chooses whether detected motion multiplies peak amount.
Action Build ActionBuildMode FollowDetectedStroke Selects when Sustained Automatic Motion reaches Action peak.
Custom Action Peak Timing CustomActionPeakTiming 1.0, 0.05..1 Shown only when ActionBuildMode == Custom; fraction of detected Action stroke at which peak is reached.
Blend Recovery Stage Changes bBlendStageAmountChanges true Blends amount transitions for non-Action recovery stages.
Recovery Stage Blend Ratio StageAmountBlendTimeRatio 0.35, 0..1 Shown when the preceding bool is true; fraction of detected Action stroke duration.
Anticipation / Amount bEnableAnticipation, AnticipationCounterStrength true, 0.25 · 0..2 Uses anticipation shape when enabled. Amount is shown when true.
Anticipation Direction AnticipationDirection CounterToAction Selects whether Anticipation is opposite to or aligned with Action.
Action / Amount bEnableAction, ActionStrength true, 1 · 0..2 Response ratio at Action peak.
Overshoot / Amount bEnableOvershoot, OvershootStrength true, 0.35 · 0..2 Response ratio for continuation after Action.
Recoil / Amount bEnableRecoil, RecoilCounterStrength true, 0.20 · 0..2 Counter-motion ratio after Overshoot.
Settle Pose / Amount bEnableSettle, SettleStrength true, 0.05 · 0..2 Response ratio retained near source pose.
One-Shot Trigger Stage PulseTriggerPhase Action Stage that starts the effect for ResponseMode == Pulse. Sustained uses Profile.
Override Automatic Stage Timing bOverrideResponseSetTiming false Enables a rule-specific stage delay when true.
Extra Stage Delay TargetRegionDelay 0 s, 0..0.5 s Shown only when the preceding bool is true.

Public C++ Helper Contracts

FOverAnimMotionPhaseResponseSettings

C++ declaration Input · return Preconditions · failure/state change
ResolveContribution(const FOverAnimSignal&, EOverAnimResponseMode, float&, float&) const Takes Signal and Response mode, writes OutMagnitudeScale and OutPolarity, returns EOverAnimMotionPhaseContributionResult. Requires a valid MotionPhase snapshot and IsValid(). Otherwise returns Ignore. Does not change settings. Resolver meaning follows the contribution-result table above.
ApplyProfile(EOverAnimMotionPhaseResponseProfile) Takes Profile; no return. FullCycle, ActionOnly, AnticipationAndAction, and RecoveryOnly overwrite corresponding stage enable flags/strengths with profile values. ModuleDefault and Custom change only Profile, preserving existing stage flags/strengths.
IsPhaseEnabled(EOverAnimMotionPhase) const Takes Phase, returns bool. Returns corresponding bEnable* for Anticipation, Action, Overshoot, Recoil, and Settle; Stable is always false.
GetSignedPhaseStrength(EOverAnimMotionPhase) const Takes Phase, returns signed strength. Does not inspect enable flags. Anticipation is positive/negative according to AnticipationDirection; Recoil is negative; Action, Overshoot, and Settle are positive; Stable is 0.
ResolveActionBuildRatio() const No input; returns Action build ratio. FollowDetectedStroke=1, EarlyAccent=0.5, Immediate=0, Custom=clamp(CustomActionPeakTiming, 0.05, 1). Does not change state.
ResolveActionStrength(const FOverAnimMotionPhaseSnapshot& Phase, float ElapsedSeconds, EOverAnimMotionPhase EntryPhase) const Takes snapshot, elapsed Action time, pre-entry stage; returns signed Action strength. Authored stage progress takes priority when present. Otherwise smooth-step interpolates from entry strength to ActionStrength over ActionTempoSeconds × ResolveActionBuildRatio(). Immediate uses peak directly.
ResolveSignedPhaseStrength(const FOverAnimMotionPhaseSnapshot&) const Takes Motion Phase snapshot; returns current signed strength. Action uses ResolveActionStrength(). Other stage transitions use bBlendStageAmountChanges and actual ending strength of the previous Action to calculate recovery blend. Caller must guarantee snapshot validity.
ResolveDetectedMotionScale(const FOverAnimSignal&) const Takes Signal; returns 0..1 motion scale. AuthoredModuleAmount always returns 1. ScaleByDetectedMotion returns clamped Strength from a valid Motion Phase, otherwise 0.
ResolveTargetRegionDelay(float ActionTimingScale = 1.0f) const Takes timing scale; returns actual delay in seconds. Returns 0 when bOverrideResponseSetTiming is false or scale is negative/non-finite. Otherwise clamps TargetRegionDelay × scale to 0..0.5 s.
ResolveMaximumTargetRegionDelay(float MaximumActionTimingScale = 1.0f) const Takes maximum timing scale; returns maximum delay in seconds. Uses the same validation/clamp as ResolveTargetRegionDelay(). Despite the name, reads or changes no separate state.
IsValid() const Returns bool. True only when MinimumConfidence is 0..1, CustomActionPeakTiming is 0.05..1, TargetRegionDelay is 0..0.5, StageAmountBlendTimeRatio is 0..1, every stage strength is 0..2, and all are finite.

FOverAnimResponseMagnitudeSettings

C++ declaration Input · return Preconditions · failure/state change
TryResolveInputMagnitude(const FOverAnimSignal&, float&) const Reads raw input magnitude from Signal into OutInputMagnitude; returns bool. SignalMagnitude requires finite Signal.Magnitude. Other sources require bHasMotionFeatures, the selected feature and measurement scale, plus Signal direction/contact normal required by projection. Returns false otherwise.
TryResolveMagnitude(const FOverAnimSignal&, float&) const Writes mapped magnitude to OutResolvedMagnitude; returns bool. If input cannot be obtained, output is 0 and return is false. Returns false for a non-finite mapping result; output is usable only on success.
ResolveMagnitude(float) const Takes raw input; returns mapped non-negative float. A zero InputMagnitudeRange span uses output at the range start. With bClampMagnitude, clamps map alpha to 0..1. This pure function does not validate range finiteness/meaning; direct callers must guarantee it.

FOverAnimResponseEnvelopeSettings

C++ declaration Input · return Preconditions · state change
GetDuration() const Returns AttackTime + HoldTime + ReleaseTime in seconds. Calculation does not clamp or validate. Details inputs are limited to non-negative, but callers must validate C++-constructed values.

FOverAnimResponseRule

C++ declaration Input · return Preconditions · failure/state change
TryResolveBaseMagnitude(const FOverAnimSignal&, float&) const Takes Signal, writes base magnitude to OutMagnitude, returns bool. Normal path uses Magnitude.TryResolveMagnitude(). AutomaticMotionPhase + SignalMagnitude + AuthoredModuleAmount returns exactly 1 without reading Signal magnitude. With ScaleByDetectedMotion, maps stage strength as Signal magnitude. Returns false on mapping failure.

Motion Feature Free Function

C++ declaration Input · return Preconditions · failure/state change
TryResolveOverAnimMotionFeatureVector(const FOverAnimMotionFeatureSnapshot&, EOverAnimResponseMagnitudeSource, EOverAnimMotionMeasurementBasis, FVector&) Takes Motion snapshot, source, basis; writes world-space vector to OutFeatureVector, returns bool. Requires MotionFeatures.IsValid(). LinearSpeed, LinearAcceleration, and TipSpeed require a resolvable measurement scale; TipSpeed also requires bHasTipVelocity. Angular sources convert to degree-unit vectors. SignalMagnitude is not a vector source and returns false. Initializes output to zero, but output from a NaN failure must not be used.

FOverAnimResponseSet · FOverAnimRequestBudgetSettings

Struct C++ property Default Effect
FOverAnimResponseSet SetName None Referenced by a Rule's ResponseSetName.
bEnabled true Rules in a false set do not route.
Intensity 1, 0+ Intensity multiplier for responses in the set.
bLogDispatch false Enables response-dispatch logging.
FOverAnimRequestBudgetSettings MaxPendingSignalsPerFrame 256, 1+ Per-frame pending-Signal limit.
MaxResolvedRequestsPerFrame 64, 1+ Per-frame resolved-request limit.
MaxActiveResponseSlots 32, 1+ Simultaneously retained response-slot limit.
MinimumSlotLifetime 1/60 s, 0+ Minimum slot retention time.
MaximumSlotLifetime 2 s, 0+ Maximum slot retention time.

FOverAnimModuleResponseParameters

FOverAnimModuleResponseParameters is the shared base struct for the FInstancedStruct stored by FOverAnimResponseRule::ModuleParameters. It has no Details properties or functions of its own and cannot be selected directly in the asset editor. Only the derived structs below matching the target Module are valid external contracts.

Contract item Meaning Rejection/validation condition
Base struct FOverAnimModuleResponseParameters Used only for ModuleParameters storage and identification of derived response-parameter types. The base alone contains no module-specific visual parameters.
Module/type match FOverAnimResponseRule::ModuleName and the derived struct in ModuleParameters Must be a derived struct supported by the selected Module. A mismatched type is a response-contract validation error.
Supported scope Modules supporting Signal/Response Joint Volume Corrective has no response-parameter struct and cannot be a Signal/Response route target.

Module Response Parameter Structs

ModuleParameters must contain only the struct matching the route's target module. Unmatched module/struct pairs are invalid.

Module · struct Property Default · range Effect
Squash & Stretch · FOverAnimSquashStretchResponseParameters PrimaryScaleAtMax 0.65, 0.05+ Primary-axis scale at full response. Below 1 squashes; above 1 stretches.
AnticipationAmount, AnticipationPeakFraction 0, 0.25 · fraction 0.05..0.75 Authored counter-shape in the explicit envelope and its peak position within Attack Time. Timing is hidden when amount is 0.
bEnableRebound, ReboundPrimaryScaleAtMax, ReboundPeakFraction false, 1.08, 0.35 Adds explicit-envelope recovery overshoot when enabled. When combined with Automatic Six-Stage Overshoot/Recoil, both apply.
Transform Spring · FOverAnimSpringResponseParameters LinearImpulseScale, MaxLinearImpulse 100 / 1000 cm/s, 0+ One-shot velocity impulse and accumulated cap.
PhaseTargetOffsetRatio 0.08, 0..0.5 Converts a sustained automatic stage into an offset relative to Region reference length.
Mesh Bulge · FOverAnimMeshBulgeResponseParameters IntensityScale, MaxIntensity, DecayRate 1, 3, 8 · 0+ One-shot intensity multiplier/cap/exponential decay. Sustained stages use current stage strength.
Contact Dent + Ring Bulge · FOverAnimContactDentBulgeResponseParameters DentStrengthAtMax, BulgeStrengthAtMax, RadiusScale all 1; strength 0..2, radius 0.25..2 Dent/ring/radius multipliers at full contact response.
Impact Ripple · FOverAnimImpactRippleResponseParameters WaveStrengthAtMax, RadiusScale 1; strength 0..2, radius 0.25..2 Compression/shear/ripple-radius multipliers at full contact response.
Smear · FOverAnimSmearResponseParameters HistoryStrengthAtMax 1, 0..1 Fraction of configured pose history exposed by signal-gated response.
Follow Through · FOverAnimFollowThroughResponseParameters HistoryStrengthAtMax 1, 0..1 Fraction of authored pose history exposed by response. Chain/safety remain unchanged.
Bone Scaler · FOverAnimBoneScalerResponseParameters MotionScaleStrengthAtMax 1, 0..1 Fraction of velocity-derived scale exposed by signal response. Axis mask/gain remain on the module.

Unsupported combinations

Joint Volume Corrective does not support Signal/Response. Contact Dent + Ring Bulge and Impact Ripple support only Pulse plus valid contact input. Check each module page for Automatic Six-Stage compatibility.