Contact Dent + Ring Bulge
Public type:
UOverAnimContactDentBulgeModule
Header:OverAnimation/Asset/OverAnimModule.h
Execution Phase:Shape
Purpose
Contact Dent + Ring Bulge is a signal-driven Shape module that presses the center of a surface inward around a gameplay contact point and contact normal and creates an outward ring around it. All contact-shape length values are derived from the Region-relative Effect Radius.
Details properties
Module ID, Module Name, Enabled, and Order Within Module Phase are hidden by the Details customization. Input Composition is an inherited property exposed in Details.
Simple
| UI name | C++ property | Default · unit · range | Effect and interaction |
|---|---|---|---|
Impact |
SimpleImpact |
1.0, unitless, 0–5 |
Multiplies authored Maximum Dent Depth and Maximum Ring Height by the same ratio, preserving the dent:ring balance. |
Reach |
SimpleReach |
1.0, unitless, 0–5 |
Multiplies authored Effect Radius by a ratio. Because the other lengths and displacements are radius ratios, the absolute size of the entire contact changes with it. |
Focus |
SimpleFocus |
1.0, unitless, 0–5 |
Applies a direct ratio to authored Dent Falloff and Ring Falloff, and an inverse ratio weighted by 0.5 to Dent Radius. 2.0 doubles the falloffs and reduces the radius to about 0.707×. |
Rebound |
SimpleRebound |
1.0, unitless, 0–5 |
Applies an inverse ratio to authored Maximum Dent Depth and a direct ratio to Maximum Ring Height, changing the balance between the inward dent and outward ring. SimpleImpact controls the overall impact size. |
Simple values do not modify the Detailed fields. At runtime, the fields above are resolved from authored Detailed values regardless of the current layout.
OverAnim | Contact Shape
| UI name | C++ property | Default · unit · range | Effect and interaction |
|---|---|---|---|
Effect Radius |
EffectRadiusRatio |
0.55, 0.05–2.0 |
Contact-radius multiplier applied to the larger of the Region's measured bounds radius and focal reference radius. SimpleReach is always applied to the final value. |
Dent Radius |
DentRadiusRatio |
0.45, 0.05–1.0 |
Radius ratio occupied by the central inward dent within Effect Radius. The weighted inverse ratio from SimpleFocus is always applied to the final value. |
Ring Start |
RingInnerRadiusRatio |
0.35, 0–1.0 |
Inner-radius ratio of the peripheral ring relative to Effect Radius. |
Ring End |
RingOuterRadiusRatio |
1.0, 0.05–1.0 |
Outer-radius ratio of the peripheral ring relative to Effect Radius. The analytic shape requires Ring End > Ring Start. Details does not automatically clamp this relationship. |
Normal Depth |
NormalDepthRatio |
0.75, 0.05–2.0 |
Slab-depth ratio relative to Effect Radius within which the effect is allowed along the contact normal. It limits how far the opposite surface is moved at equal strength. |
Maximum Dent Depth |
MaximumDentDepthRatio |
0.15, 0–0.5 |
Maximum inward-displacement ratio obtained by multiplying the authored value by SimpleImpact × inverse(SimpleRebound). Master effect intensity and the response's Dent Strength are multiplied afterward. |
Maximum Ring Height |
MaximumBulgeHeightRatio |
0.10, 0–0.5 |
Maximum outward-ring displacement ratio obtained by multiplying the authored value by SimpleImpact × SimpleRebound. Master effect intensity and the response's Ring Bulge Strength are multiplied afterward. |
Dent Falloff |
DentFalloffExponent |
1.5, 0.25–8.0 |
Radial-weight exponent of the central dent. SimpleFocus is always applied to the final value. |
Ring Falloff |
RingFalloffExponent |
1.25, 0.25–8.0 |
Weight exponent of the ring bell profile. SimpleFocus is always applied to the final value. |
Maximum Simultaneous Contacts |
MaximumActiveContacts |
4, 1–4 |
Number of independent contact slots retained simultaneously for this Region. The runtime maximum is also 4. When all slots are occupied, only a new contact with higher priority, magnitude, and sequence replaces the weakest contact. |
OverAnim (inherited)
| UI name | C++ property | Default · unit · range | Effect |
|---|---|---|---|
Input Composition |
CompositionMode |
Re-Skinning |
The default set by this module's constructor. Re-Skinning evaluates the module from the current control-point transform. |
Execution · Signal · Response scope
| Item | Behavior |
|---|---|
| Phase | Shape |
| Signal | Supported, but only Signals with a valid contact point and contact normal are accepted as effect requests. |
| Response Mode | Pulse only. Sustained is not supported. |
| Automatic Six-Stage Motion | Not compatible. This module is a contact shape that requires a gameplay contact point and normal, so it cannot create an Automatic Six-Stage Motion Response. |
Response Rule-only parameters
The Module Response struct for UOverAnimContactDentBulgeModule is FOverAnimContactDentBulgeResponseParameters.
| UI name | C++ property | Default · unit · range | Effect |
|---|---|---|---|
Dent Strength |
DentStrengthAtMax |
1.0, 0–2.0 |
Multiplies Maximum Dent Depth at full response strength. At 0, only the dent is removed and the ring continues to be processed. |
Ring Bulge Strength |
BulgeStrengthAtMax |
1.0, 0–2.0 |
Multiplies Maximum Ring Height at full response strength. At 0, only the ring is removed and the dent continues to be processed. |
Contact Radius |
RadiusScale |
1.0, 0.25–2.0 |
Per-response multiplier applied to the module's Region-relative Effect Radius. |
Signal input rules
The request must be Pulse and requires a valid Mesh Component, positive finite resolved magnitude and blend weight, and the Response parameters above within their valid ranges. Contact-frame initialization checks all of the following values.
| Signal field | Requirement | Runtime behavior |
|---|---|---|
bHasContactPoint / ContactPointWS |
The flag is true and the value is finite |
Converts it to a component-space contact point. Rejects the request if it is missing or NaN. |
bHasContactNormal / ContactNormalWS |
The flag is true, the value is finite, and it is not a zero vector |
Converts it to component space and normalizes it. Rejects the request if it is missing, NaN, or zero. |
ContactBoneName |
Optional. If specified, the bone must be found on the Mesh Component | For a valid bone, stores the contact point/normal in that bone's local space so they follow it during the response. Rejects the request if the bone cannot be found. If empty, uses a component-space contact frame. |
If Slot Name is non-empty and matches an existing active contact, that contact's weight state is updated. If empty, each request is treated as an independent contact.
Safety · performance · validation
- The effect is not added to the proxy if the effect radius is nearly zero, or if the contact is farther from the Region center than
RegionBoundsRadius + EffectRadius. - The analytic contact shape requires
Dent Radius <= Effect Radius,Ring Start >= 0,Ring End > Ring Start,Ring End <= Effect Radius, positive normal depth, and finite falloff exponents. A shape that fails these conditions does not create a sample. - Active contacts update their envelope weights on fixed ticks and are removed when they become inactive. Increasing
Maximum Simultaneous Contactsincreases the number of contacts retained and evaluated simultaneously. - The current public runtime constant
GOverAnimMaximumContactDentBulgeContactsis4, so the Details value cannot increase beyond it.