INSODIMENSIONStudios
FoleyReference

AnimNotify Reference

UAnimNotify_AgenticFoley modes, configuration, and usage

AnimNotify Reference

UAnimNotify_AgenticFoley is a C++ AnimNotify with two modes for different foley scenarios.


FootSockets Mode

Standard footsteps. Traces from a per-notify list of foot sockets on the character's skeletal mesh.

Properties

PropertyTypeDescription
NotifyModeEAgenticFoleyNotifyModeSet to FootSockets.
FootSocketsTArray<FName>Which feet to trace. e.g., [foot_l] for left step, [foot_l, foot_r] for both.
EventTagFGameplayTagFoley event tag (e.g., Foley.Event.Walk).
VolumeMultiplierfloatVolume scalar (default 1.0).
PitchMultiplierfloatPitch scalar (default 1.0).

Example configuration on a third-person walk animation:

Agentic Foley notify details panel

How It Works

  1. AnimNotify fires during animation playback
  2. Finds UAgenticFoleyComponent on the owning actor
  3. Calls TriggerFoleyEventForFeet(FootSockets, EventTag)
  4. Component traces downward from each foot socket
  5. Resolves surface, dispatches audio + VFX + stamps

Per-foot identity is preserved through the entire pipeline. A left foot step traces from foot_l, stamps the left boot texture, and plays audio at the left foot location.


Socket Mode

Weapon impacts, shield bashes, staff slams. Traces from a named socket on any mesh component.

Properties

PropertyTypeDescription
NotifyModeEAgenticFoleyNotifyModeSet to Socket.
SocketNameFNameSocket to trace from (e.g., sword_tip, shield_boss).
MeshComponentTagFNameComponent tag to find the correct mesh (optional).
EventTagFGameplayTagFoley event tag.
VolumeMultiplierfloatVolume scalar.
PitchMultiplierfloatPitch scalar.

How It Works

  1. AnimNotify fires during attack/impact animation
  2. Finds UAgenticFoleyComponent on the owning actor
  3. Calls TriggerFoleyFromSocket(SocketName, MeshComp, EventTag)
  4. Traces from the socket position using normal-based rotation
  5. Dispatches via GAS GameplayCue for multiplayer replication

Biped vs Quadruped

The notify's FootSockets array supports any number of feet:

RigFootSockets
Biped[foot_l] or [foot_r] per step
Quadruped[foot_fl, foot_fr] for front pair, [foot_bl, foot_br] for back
CustomAny named socket on the skeleton

Nothing is hardcoded to two legs. The pipeline processes each socket independently.


Migration from GASP Notifies

If your project already uses GASP's built-in footstep notifies (BP_AnimNotify_FoleyEvent_Walk_L, etc.), you have two options:

  1. Replace — Swap GASP BP notifies for UAnimNotify_AgenticFoley in FootSockets mode
  2. Keep both — The GASP BP notifies call into AC_FoleyEvents::PlayFoleyEvent, which (after reparenting) routes through the C++ pipeline. Both paths work.

Option 2 is simpler for existing projects. The reparenting step in the Quick Start handles the wiring automatically.

The BP dispatch is a single node

After reparenting, AC_FoleyEvents::PlayFoleyEvent is a one-node graph — it calls PlayFoleyAtOwner, which internally runs ResolveFoleySoundIsValidSpawnSoundAttachedApplySlotParametersDispatchFoleyVFX in C++. The prior five-node BP chain has been collapsed behind that single BlueprintCallable so both the C++ notify and the BP notify share identical dispatch logic (including per-surface VolumeMultiplier composition from the FoleyConfig DataAsset). Picking Option 1 (C++ notify) versus Option 2 (BP notify) is now purely about whether you want BP-side extensibility — the audio/VFX output is byte-identical.

BP function graph for AC_FoleyEvents::PlayFoleyEvent — a single Play Foley At Owner node consuming Event Tag, Volume Multiplier, Pitch Multiplier, and Trace Sideways, then returning the spawned AudioComponent.