Skip to content

Effect Modules

Baseline: OverAnim 0.1.0 Beta · Unreal Engine 5.8
Header: OverAnimation/Asset/OverAnimModule.h

This index links to the public authoring contracts for the nine modules that can be added to the Module Stack. Each page follows the actual public C++ fields, EditCondition, runtime validation, and runtime interpretation of Simple knobs. Renderer proxy and shader state are excluded because they are not external authoring contracts.

Simple and Details

Simple and Details in the Asset Editor author the same runtime parameters at different levels. Transform Spring, Follow Through, Mesh Bulge, Smear, Contact Dent + Ring Bulge, Joint Volume Corrective, Impact Ripple, and Bone Scaler have Simple* knobs applied to Detailed properties.

  • Simple knobs range from 0.0–5.0 and default to 1.0.
  • 1.0 means 100% of the value authored in Detailed; 2.0 means 200% for ordinary ratio-based properties.
  • Simple knobs are always applied to runtime parameters regardless of the currently visible layout. Switching Simple / Details changes only which properties are displayed.
  • Simple knobs do not write values back to Detailed properties. Results are recalculated from Detailed authored values whenever a runtime instance is created, so they do not accumulate.
  • Direct-ratio, inverse-ratio, and fixed-range additive properties use different interpretations, and final results are limited to each Detailed property's safe range. For inverse-ratio properties, knob 0 uses a safe ratio of 0.01.
  • Squash & Stretch has no Simple knobs. Its Simple view uses the Response authoring UI and Master Effect Intensity only.

Shared module contract

Shared item C++ property Meaning
Input Composition CompositionMode Additive Offset adds a delta to the previous composed result; Re-Skinning reevaluates from the current control-point transform. This value does not determine execution Phase or stack order.
Module identity ModuleId, ModuleName, bEnabled Identity, name, and enabled state managed by the Module Stack. They are hidden from module parameter references in custom Details. Rule routing uses ModuleName.
Phase order PhaseOrder Composed order within the same Phase. It is not a stage selector for Automatic Six-Stage Motion stages such as Starting Pose or Action.
Asset intensity UOverAnimMeshDeformer::MasterEffectIntensity Asset-wide multiplier for all authored module strength. Per-module safety limits remain in effect.

UOverAnimDeformerModule extension · query contract

UOverAnimDeformerModule is a public base class marked Abstract, BlueprintType, EditInlineNew, and DefaultToInstanced. This class does not itself create an executable effect in the Module Stack; concrete module classes override the factories and queries below to declare their execution, Signal, and Response contracts. These are C++ virtual functions, not Blueprint nodes.

Runtime factory · identity

C++ declaration Base implementation · return Extension contract
virtual UOverAnimDeformerInstance* CreateInstance(UObject* Outer, UOverAnimDeformerInstanceSettings* Settings, FGuid BoneGroupId, FName BoneGroupName) const The base class returns nullptr. An executable concrete module overrides it to create a runtime instance for the Bone Group. Outer, Settings, and Group ID/name are creation context; ownership of the returned instance is managed by the calling path.
virtual FText GetModuleDisplayName() const The base class returns ModuleName as FText. Override when a separate rule supplies the name displayed in the Module Stack. This return value does not change the ModuleName route used by Response Rules.
virtual EOverAnimModulePhase GetPhase() const The base-class default is Shape. Returns the module's execution Phase. PhaseOrder orders only modules whose return value is the same.
virtual const UScriptStruct* GetResponseParameterStruct() const The base class returns nullptr. Returns the user parameter struct delivered to this module by a Response Rule. nullptr means there is no module-specific Response parameter struct contract.

Signal · Response · Automatic Motion queries

C++ declaration Base implementation · return Contract
virtual bool SupportsSignals() const false Only modules returning true can react to Signals. The return may depend on the concrete module's current driver/configuration.
virtual bool SupportsResponseMode(EOverAnimResponseMode ResponseMode) const true only for Pulse Queries whether the Response mode is allowed for the module.
virtual bool SupportsResponseModeForTimingDriver(EOverAnimResponseMode ResponseMode, EOverAnimResponseTimingDriver TimingDriver) const The base class does not distinguish TimingDriver and returns SupportsResponseMode(ResponseMode). Modules that must consider the timing driver override this query.
virtual EOverAnimResponseMode GetPreferredAutomaticMotionPhaseResponseMode() const Sustained if supported, otherwise Pulse Preferred Response mode when Automatic Six-Stage Motion creates a rule targeting the module. Actual permission is evaluated together with the next query.
virtual FOverAnimMotionPhaseResponseSettings GetPreferredAutomaticMotionPhaseSettings() const Default-constructed FOverAnimMotionPhaseResponseSettings Default module timing/phase settings for an Automatic Motion rule.
virtual EOverAnimResponseTimingRole GetAutomaticMotionPhaseTimingRole() const Shape Timing role for Automatic Motion. Per-module override values are used to interpret Response timing.
virtual bool CanCreateAutomaticMotionPhaseResponse(FText& OutFailureReason) const Returns true with empty OutFailureReason on success. The base class checks bEnabled, ModuleName, SupportsSignals(), and the preferred mode's SupportsResponseModeForTimingDriver(... AutomaticMotionPhase) in order. On failure, it returns false with a reason. Concrete modules can additionally check required bone, chain, history, or contact conditions.

Editor change classification

These three functions exist only under WITH_EDITOR. They are not runtime/Blueprint call contracts.

C++ declaration Base implementation · state change Extension contract
virtual bool IsStructuralProperty(FName PropertyName) const false A property or member-property change for which this returns true is classified as an asset change of type Structure.
virtual void PostEditChangeProperty(FPropertyChangedEvent& PropertyChangedEvent) If the Outer is UOverAnimMeshDeformer, calls NotifyAssetChanged() with Structure for changes to bEnabled or properties identified by IsStructuralProperty(), and Parameters otherwise. Override IsStructuralProperty() when the module class must identify a Details change as structural.
virtual void PostEditUndo() If the Outer is the asset, reports a Structure change. Override when module editor state requires separate synchronization after Undo, while preserving the asset-change classification contract.

Module execution enums

EOverAnimModuleTuningSource

Current built-in module runtime does not read UOverAnimMeshDeformer::TuningSource. This enum and serialized field remain for compatibility with existing assets, but do not control Simple / Details panel selection or runtime parameter calculation.

Value Meaning
Detailed Compatibility-only serialized value. It does not change built-in module runtime behavior.
Simple Compatibility-only serialized value. Simple knobs are applied to Detailed authored values regardless of this value.

EOverAnimModulePhase

EOverAnimModulePhase divides modules into execution sections. PhaseOrder applies only among modules with the same value; it is not a stage selector such as Starting Pose or Action in Automatic Six-Stage Motion.

Value · UI display name Meaning Built-in modules in OverAnim 0.1.0 Beta
Dynamics · Dynamics Execution section for dynamic deformation of guide bones. Transform Spring, Follow Through, Bone Scaler
Shape · Shape Execution section for changing surface/volume shape. Mesh Bulge, Squash & Stretch, Contact Dent + Ring Bulge, Joint Volume Corrective
Smear · Offset / Smear Execution section for offset or smear deformation. Smear, Impact Ripple
Presentation · Presentation Public execution section for final presentation effects. None of the nine built-in modules in this release returns this value. Concrete extension modules may return this Phase.

EOverAnimModuleCompositionMode

EOverAnimModuleCompositionMode supplies the values for Input Composition in Module Details and the CompositionMode property. The default is AdditiveOffset.

Value · UI display name Input/composition meaning Relationship to Phase · order
AdditiveOffset · Additive Offset Adds the module's displacement to the current composed result. Does not select a Phase or change PhaseOrder.
ReSkinning · Re-Skinning Reevaluates the module using the current control-point transform as input. Does not select a Phase or change PhaseOrder.

Module index

Phase Module Signal · Response Automatic Six-Stage Motion
Dynamics Transform Spring Pulse, automatic Sustained when Position Spring is enabled Conditional support
Follow Through Pulse, Sustained with a Signal-enabled driver Conditional support
Shape Mesh Bulge Pulse, Sustained with a signal-enabled driver Conditional support
Squash & Stretch Pulse, Sustained Conditional support
Contact Dent + Ring Bulge Valid-contact Pulse only Not supported
Joint Volume Corrective Not supported Not supported
Offset / Smear Smear Pulse, Sustained with a signal-enabled driver Conditional support
Impact Ripple Valid-contact Pulse only Not supported
Dynamics Bone Scaler Pulse, Sustained with a signal-enabled driver Conditional support

Cross-reference

Matching a Response target

A Response Rule must pass all of Signal Name, Bone Group Name, Module Name, the Module's Signal support, Response parameter struct, and lifecycle/timing conditions. If any condition does not match, no response is created for that module even when the Signal is accepted.