Impact Ripple
Purpose
UOverAnimImpactRippleModule is an Offset / Smear module that creates compression and shear waves which begin at a gameplay contact point and normal and travel across the surface.
- Header:
OverAnimation/Asset/OverAnimModule.h - Class:
UOverAnimImpactRippleModule - Execution Phase:
Offset / Smear(EOverAnimModulePhase::Smear) - Default Input Composition:
Additive Offset - Default Phase order:
10(execution order within the same Phase; hidden in Details)
Shared by Simple and Details
Module Id, Module Name, enabled state, and Order Within Module Phase are managed by the Module Stack and are therefore omitted from this Details reference.
| UI name | Owning C++ property | Default / range | Effect |
|---|---|---|---|
| Master Effect Intensity | UOverAnimMeshDeformer::MasterEffectIntensity |
1.0 / minimum 0.0, UI maximum 3.0 |
Asset-wide value also shown in the selected module's Details. It scales authored strength for all modules in the asset, while each module's safety limits remain independent. |
| UI name | C++ property | Default / range | Effect |
|---|---|---|---|
| Input Composition | CompositionMode |
Additive Offset |
Adds the wave offset to the composed result. The constructor sets this value to AdditiveOffset. |
| Impact | SimpleImpact |
1.0 / 0–5 |
Multiplies authored Maximum Compression and Maximum Shear by the same ratio, preserving the ratio between the two waves. |
| Reach | SimpleReach |
1.0 / 0–5 |
Multiplies authored Effect Radius by a ratio. Because the other lengths and displacements are ratios of the resolved radius, the world size of the entire wave changes with it. |
| Snap | SimpleSnap |
1.0 / 0–5 |
Applies an inverse ratio to authored Compression Travel Time and a direct ratio to Damping Rate. 2.0 halves travel time and doubles damping. |
| Focus | SimpleFocus |
1.0 / 0–5 |
Applies an inverse ratio to authored Wave Width and a direct ratio to Oscillation Cycles. 2.0 halves the width and doubles the cycle count. |
Runtime interpretation of Simple knobs
Simple values do not modify Detailed fields. Runtime resolves the following values from authored Detailed values regardless of the current layout.
| Simple knob | Resolved properties | Processing |
|---|---|---|
SimpleImpact |
MaximumCompressionDisplacementRatio, MaximumShearDisplacementRatio |
Applies the same ratio to both authored values and limits each to 0–0.25. |
SimpleReach |
EffectRadiusRatio |
Applies a ratio to the authored radius and limits it to 0.1–3.0. |
SimpleSnap |
CompressionTravelTime, DampingRate |
Applies an inverse ratio to travel time and a direct ratio to damping. |
SimpleFocus |
WaveWidthRatio, OscillationCycles |
Applies an inverse ratio to wave width and a direct ratio to the cycle count. |
Details: Ripple
| UI name | C++ property | Default / range | Effect and relationship |
|---|---|---|---|
| Effect Radius | EffectRadiusRatio |
1.25 / 0.1–3.0 |
Maximum surface travel-radius multiplier applied to the Region's measured bounds radius. The Response's Ripple Radius multiplies this result again. |
| Compression Travel Time | CompressionTravelTime |
0.18 s / 0.03–1.0 s |
Time for the faster compression wave to cross the Effect Radius. Compression Speed is calculated as EffectRadius / CompressionTravelTime. |
| Maximum Compression | MaximumCompressionDisplacementRatio |
0.06 / 0.0–0.25 |
Maximum displacement ratio in the contact-normal direction relative to resolved Effect Radius. Multiplied by the Response's Wave Strength and the Asset's Master Effect Intensity. |
| Maximum Shear | MaximumShearDisplacementRatio |
0.035 / 0.0–0.25 |
Maximum tangential-displacement ratio relative to resolved Effect Radius. Multiplied by Wave Strength and Master Effect Intensity. |
| Shear Speed Ratio | ShearSpeedRatio |
0.62 / 0.1–0.95 |
Shear-wave speed / compression-wave speed. A value lower than 1 visually separates the second, trailing wave. |
| Wave Width | WaveWidthRatio |
0.16 / 0.03–0.5 |
Authored Gaussian wave-band width relative to Effect Radius. The inverse ratio from SimpleFocus is always applied to the final value. |
| Surface Depth | NormalDepthRatio |
0.75 / 0.05–2.0 |
Normal-depth slab depth relative to Effect Radius. It limits equal-strength motion from reaching the opposite surface of a thin limb. |
| Damping Rate | DampingRate |
5.0 / 0.0–30.0 |
Exponential time-decay rate. Higher values make the ripple disappear sooner. |
| Oscillation Cycles | OscillationCycles |
0.75 / 0.0–3.0 |
Number of sign-changing lobes within one wave width. 0 produces a single smooth traveling band. |
Shear Speed Ratio, Wave Width, Surface Depth, Damping Rate, and Oscillation Cycles are Advanced Display properties. Advanced Display only hides them; it does not change runtime behavior or validity conditions.
Details: Safety
| UI name | C++ property | Default / range | Effect |
|---|---|---|---|
| Maximum Simultaneous Ripples | MaximumActiveRipples |
4 / 1–4 |
Fixed runtime budget for independent ripples retained simultaneously in the Region. At the limit, an incoming ripple replaces the currently weakest ripple only if it has higher priority/magnitude/sequence precedence. Otherwise, the request is rejected. |
4 is the global maximum (GOverAnimMaximumImpactRipples), so runtime limits even a larger serialized value to 4.
Execution · Signal · Response scope
| Item | Support |
|---|---|
| Signal | Uses gameplay contact Signals only. |
| Response Mode | Supports Pulse only. Sustained is not supported. |
| Response Parameters | FOverAnimImpactRippleResponseParameters |
| Automatic Six-Stage Motion | Not supported. This module requires a gameplay contact point and normal. |
| Required Signal data | bHasContactPoint, bHasContactNormal, a valid contact point, and a nonzero normal. Contact Bone Name is optional, but pins the wave to the bone when valid. |
Submit OverAnim Impact Signal, Hit Result, Collision, and Trace/Point/Radial Damage families are Signal paths that include contact data. The module rejects Response Modes other than Pulse.
Response Rule parameters and Signal conditions
The Module Parameters of a Response Rule use FOverAnimImpactRippleResponseParameters.
| UI name | C++ property | Default / range | Effect |
|---|---|---|---|
| Wave Strength | WaveStrengthAtMax |
1.0 / 0.0–2.0 |
Multiplies both compression and shear displacement at maximum response. |
| Ripple Radius | RadiusScale |
1.0 / 0.25–2.0 |
Per-response multiplier applied to the module's Region-relative travel radius. |
All of the following must be satisfied for a request to be accepted.
- Response Mode must be
Pulse. WaveStrengthAtMaxmust be finite and within0.0–2.0, andRadiusScalemust be finite and within0.25–2.0.ResolvedMagnitudeandBlendWeightmust be finite and both greater than0.- The Signal must contain a contact point and a nonzero contact normal, neither containing NaN.
If Contact Bone Name is empty, the contact frame is fixed in component space. If it names a valid bone, the contact point/normal are stored in that bone's local space and move with subsequent pose changes. The request is rejected if the named bone does not exist on the mesh.
Limitations and performance
- Automatic Six-Stage Motion is unavailable. Automatic stage generation is explicitly rejected for this module.
- It is
Pulse-only.SustainedResponse Rules are incompatible. - Maximum ripple lifetime is calculated as
CompressionTravelTime × (1 + 3 × WaveWidthRatio) / ShearSpeedRatio. An active ripple is removed after this time or when its response weight becomes inactive. - If the contact point is farther from the Region center than
RegionBoundsRadius + EffectRadius, that ripple produces no output during the build stage. - Active ripple count is limited by
Maximum Simultaneous Ripples, so only that many are passed to the runtime proxy even during many simultaneous contacts.