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.