Signal · Impact Types
Baseline: OverAnim
0.1.0 Beta· Unreal Engine5.8
Header:OverAnimation/Runtime/OverAnimSignalTypes.h
A Signal is the input contract interpreted by Response Rules. For Signal nodes on UOverAnimComponent, see Component Signal API; for Rule routes, see Response Types.
Signal Enums
| Enum | Value | Meaning · compatibility |
|---|---|---|
EOverAnimSignalSource |
Manual |
Submitted directly from Blueprint/C++. Matches the ManualOnly activation policy. |
MotionAnalyzer |
Generated by the Actor/Region motion analyzer. Matches MotionOnly. |
|
AnimNotify |
Generated by an OverAnim Signal Notify. Matches AnimNotifyOnly. |
|
GameplayEvent |
Gameplay submission such as Hit, Collision, Trace, or Damage. Matches GameplayEventOnly. |
|
EOverAnimSignalLifecycle |
Pulse |
An event interpreted once. Contact-based modules accept only this lifecycle. |
StateUpdate |
Continuous update of an active state. Used for Sustained responses. | |
StateEnd |
Signals the end of the same state. | |
EOverAnimMotionPhase |
Stable (Starting Pose) |
Stage returning to the source pose. Sustained responses release deformation. |
Anticipation, Action, Overshoot, Recoil, Settle |
The other five stages of Automatic Six-Stage Motion. Used only when the Rule's Timing Model is Automatic Six-Stage Motion. |
C++ Phase-Name Helper
GetOverAnimMotionPhaseName(EOverAnimMotionPhase Phase) is an inline C++ helper, not a Blueprint node. The returned strings are stable identifiers below, not localized DisplayName values.
Input Phase |
Returned const TCHAR* |
Return condition |
|---|---|---|
Stable |
StartingPose |
Valid stage. |
Anticipation, Action, Overshoot, Recoil |
English name matching each enum | Valid stage. |
Settle |
SettlePose |
Valid stage. |
| undefined value | Unknown |
No enum case matches. |
FOverAnimSignalProtocolSettings
EOverAnimSignalProtocolChannel groups common Signal names used by Notifies and Components. Custom bypasses the mapping below and uses the caller-provided name.
| Protocol Channel | C++ property | Default Signal name |
|---|---|---|
Manual Preview |
ManualPreviewSignalName |
Preview.Manual |
Attack Swing |
AttackSwingSignalName |
Combat.AttackSwing |
Hit Impact |
HitImpactSignalName |
Combat.HitImpact |
Wide Spread |
WideSpreadSignalName |
Combat.WideSpread |
Collision Impact |
CollisionImpactSignalName |
Collision.Impact |
Animation Accent |
AnimationAccentSignalName |
Animation.Accent |
FOverAnimSignalProtocolSettings::ResolveSignalName(EOverAnimSignalProtocolChannel Channel, FName CustomSignalName) returns one of the names above or CustomSignalName. With Custom and a None name, there is no Signal name to route.
EOverAnimSignalProtocolChannel value |
Value read by resolver |
|---|---|
Custom |
The CustomSignalName argument. |
ManualPreview, AttackSwing, HitImpact, WideSpread, CollisionImpact, AnimationAccent |
Corresponding settings fields in the same order as the table above. |
| C++ declaration | Input · return | Contract |
|---|---|---|
FName ResolveSignalName(EOverAnimSignalProtocolChannel Channel, FName CustomSignalName = NAME_None) const |
protocol channel, custom fallback → FName |
Returns the corresponding settings field unchanged for ManualPreview through AnimationAccent. Returns CustomSignalName for Custom or an undefined channel. Does not validate the name or the existence of a Rule. |
FOverAnimImpactSignalSettings
| Details UI name | C++ property | Default · range | Effect · relationship |
|---|---|---|---|
Min Equivalent Impact Speed |
MinEquivalentImpactSpeed |
200 cm/s, 0+ |
Lower bound mapping relative velocity/normal impulse to zero magnitude. |
Max Equivalent Impact Speed |
MaxEquivalentImpactSpeed |
1600 cm/s, 1+ |
Upper bound mapping to magnitude 1. Must exceed the minimum. |
Reference Mass Kg |
ReferenceMassKg |
80 kg, 0.01+ |
Reference for converting NormalImpulseWS.Size() / ReferenceMassKg to equivalent speed. |
Response Exponent |
ResponseExponent |
0.75, 0.01+ |
Exponent of the speed-based 0..1 magnitude curve. |
Min Gameplay Damage |
MinGameplayDamage |
0, 0+ |
Zero point of Damage-based magnitude. |
Max Gameplay Damage |
MaxGameplayDamage |
100, 0.01+ |
One point of Damage-based magnitude. Must exceed the minimum. |
Gameplay Damage Exponent |
GameplayDamageExponent |
0.75, 0.01+ |
Exponent of the Damage-based magnitude curve. |
Deduplication Window |
DeduplicationWindow |
0.08 s, 0+ |
Time window for combining duplicate Impacts in the same source/contact family. |
Contact Merge Distance |
ContactMergeDistance |
20 cm, 0+ |
Distance considered the same contact during deduplication. |
Stronger Impact Bypass Ratio |
StrongerImpactBypassRatio |
1.25, 1+ |
An impact at least this ratio stronger than the existing item bypasses deduplication. |
ResolveMagnitude takes the greater of approach speed along the contact normal and impulse-equivalent speed, clamps it to 0..1 over the speed range above, then applies the exponent. It returns 0 when an input vector or setting is NaN/infinite, or when Max <= Min. ResolveGameplayMagnitude validates the damage range in the same way.
| C++ declaration | Input · return | Rejection · boundary conditions |
|---|---|---|
float ResolveMagnitude(const FVector& RelativeVelocityWS, const FVector& NormalImpulseWS, const FVector& ContactNormalWS) const |
relative velocity, normal impulse, contact normal → 0..1 magnitude |
Returns 0 if any vector contains NaN; the speed range, mass, or exponent is non-finite; MaxEquivalentImpactSpeed <= MinEquivalentImpactSpeed; or mass/exponent is non-positive. When the normal is nearly zero, uses total relative-speed magnitude as approach speed. |
float ResolveGameplayMagnitude(float Damage) const |
damage → 0..1 magnitude |
Returns 0 if the input or damage range/exponent is non-finite, MaxGameplayDamage <= MinGameplayDamage, or the exponent is non-positive. Otherwise range-maps then applies the exponent. |
FOverAnimSignal
| UI name | C++ property | Default · input | Effect · visibility condition |
|---|---|---|---|
| Signal Name | SignalName |
None |
First routing condition matching a Rule's SignalName. None cannot make a valid route. |
| Source | Source |
Manual |
Compared against the Activation policy's source filter. |
| Lifecycle | Lifecycle |
Pulse |
Must match Rule timing and the Module's supported signal scope. |
| Magnitude | Magnitude |
1, 0+ |
Default input to the Rule's Magnitude mapping. |
| Direction WS | DirectionWS |
zero vector | World-space direction. Basis for Along/Against Signal Direction projection. |
| Origin WS | OriginWS |
zero vector | World-space origin. May be used for contact/region position selection. |
| Source Region Name | SourceRegionName |
None |
Must match when the Rule's SourceRegionFilter is not None. |
| Source Id | SourceId |
None |
Name identifying the same source event/state. |
| Has Contact Point | bHasContactPoint |
false |
When true, uses ContactPointWS as valid input. Required by Contact/Impact modules. |
| Contact Point WS | ContactPointWS |
zero vector | Meaningful only when bHasContactPoint is true. |
| Has Contact Normal | bHasContactNormal |
false |
When true, uses ContactNormalWS as valid input. Required by Contact/Impact modules. |
| Contact Normal WS | ContactNormalWS |
up vector | Meaningful only when bHasContactNormal is true. |
| Contact Bone Name | ContactBoneName |
None |
Skeletal anchor for moving contact. HitResult submission fills it with the hit bone. |
| Has Motion Features | bHasMotionFeatures |
runtime read-only | When true, indicates that the analyzer filled MotionFeatures. Not writable when constructing a Signal directly. |
| Motion Features | MotionFeatures |
runtime read-only | Shown only when bHasMotionFeatures is true. Read by a Rule's physical-feature magnitude source. |
| Has Motion Phase | bHasMotionPhase |
runtime read-only | When true, an automatic-stage snapshot exists. |
| Motion Phase | MotionPhase |
runtime read-only | Shown only when bHasMotionPhase is true. |
Contact input contract
Contact Dent + Ring Bulge and Impact Ripple require a Pulse lifecycle and valid Contact Point and Contact Normal. If either is missing, the module's contact response is not interpreted.
Runtime Read-Only Snapshots
FOverAnimMotionFeatureSnapshot
| C++ property | Unit | Meaning |
|---|---|---|
LinearVelocityWS |
cm/s | world-space linear velocity |
LinearAccelerationWS |
cm/s² | world-space linear acceleration |
AngularVelocityRadiansWS |
rad/s | world-space angular velocity |
AngularAccelerationRadiansWS |
rad/s² | world-space angular acceleration |
bHasTipVelocity, TipVelocityWS |
bool, cm/s | presence and value of tip velocity |
SampleDeltaSeconds |
s | sample interval that produced this snapshot |
MeasurementScales |
struct | proportion-normalization scale for physical features |
FOverAnimMotionPhaseSnapshot
EOverAnimMotionPhaseTimingSource identifies the source of Stage timing in the snapshot.
| C++ value | Editor UI | Meaning |
|---|---|---|
AutomaticAnalysis |
Automatic Analysis |
The pose-motion analyzer detected the Stage and progress. |
AuthoredCurve |
Authored Stage Curve |
A Bone Group Stage Curve provided timing. |
AuthoredMarker |
Authored Stage Marker |
An OverAnim Motion Stage Marker Notify provided timing. |
| C++ property | Meaning |
|---|---|
Phase, PreviousPhase, bPhaseChanged |
Current/previous stage and whether a transition occurred. |
TimingSource |
Current timing source among Automatic analysis, Stage Curve, and Stage Marker. |
ActionEntryPreviousPhase |
Stage immediately before entering the current Action. Used for Action buildup and recovery continuity. |
Strength, PreviousStageStrength, Confidence |
Analyzer evidence and stage-continuity values. ScaleByDetectedMotion uses Strength. |
MotionEnergy, ActionEnergy, PreparationEnergy, EnergyTrend |
Normalized motion evidence used for automatic-stage decisions. |
EstimatedTimeToAction, ActionTempoSeconds, TimeInPhase, PreviousPhaseDuration |
Action prediction, time in current stage, and actual previous-stage duration, in seconds. |
AuthoredStageProgress, bHasAuthoredStageProgress |
Authored curve/marker's 0–1 progress within the current Stage and whether it exists. Disabled for Automatic analysis. |
CycleId |
Region-local analyzer cycle ID. The same value may recur in different Regions. |
ActionId |
Monotonically increasing action identifier assigned by the Action Group arbiter. Distinguishes cycles across Regions. |
DirectionAlignment, ActionAxisWS, bActionAxisProvisional |
Action-direction alignment, direction, and provisional state. |
Both snapshots are VisibleAnywhere, BlueprintReadOnly output state. Modifying them does not feed analyzer input.
Snapshot Validation · Pose-Cut Helper
The following are C++ helpers, not Blueprint nodes. They do not modify struct values and return only validation or preservation results.
| C++ declaration | Return | Valid · rejection conditions |
|---|---|---|
bool FOverAnimMotionFeatureSnapshot::IsValid() const |
true for a valid feature snapshot |
Linear/angular vectors must contain no NaN; when bHasTipVelocity, the tip vector must contain no NaN; SampleDeltaSeconds must be finite and positive; and MeasurementScales.IsValid() must be true. |
bool FOverAnimMotionPhaseSnapshot::IsValid() const |
true for a valid phase snapshot |
Every scalar must be finite, and normalized values/authored progress must be in their declared ranges. EstimatedTimeToAction >= 0; ActionTempoSeconds is 0.01..0.5 s; TimeInPhase and PreviousPhaseDuration are 0+; CycleId and ActionId are 0+; and ActionAxisWS must not contain NaN or be a zero vector. |
bool ShouldPreserveOverAnimSignalAcrossSourcePoseDiscontinuity(const FOverAnimSignal& Signal) |
whether to preserve across a pose-source discontinuity | Only Pulse is eligible. Region pose-motion pulses produced by MotionAnalyzer with SourceRegionName set are not preserved; other Pulse values return true. StateUpdate and StateEnd always return false. |
FOverAnimPoseCutProtectedPulseBuffer is an internal runtime pose-cut preservation buffer and is not part of Blueprint or the supported external integration contract.