Equipment Layers
Runtime-swappable audio layers for armor, gear, and equipment
Equipment Layers
Add simultaneous audio layers on top of surface footsteps. A knight in plate armor on snow produces: snow step + plate clank + sword rattle — three layers mixed in one MetaSound.
How SlotBanks Work
The foley MetaSound has 4 audio chains:
| Layer | Source | When Active |
|---|---|---|
| Layer 0 (Surface) | UAgenticFoleyDataAsset AudioBank | Always |
| Layer 1 (Armor) | SlotBank in EAgenticFoleySlot::Armor | When equipped |
| Layer 2 (Gear) | SlotBank in EAgenticFoleySlot::Gear | When equipped |
| Layer 3 (Extra) | SlotBank in EAgenticFoleySlot::Extra | When equipped |
Each slot bank is a UAgenticFoleySlotBank DataAsset — a mapping of event tags to wave arrays with per-event volume control.
Equipping at Runtime
// Equip plate armor
FoleyComponent->SetSlotBank(
EAgenticFoleySlot::Armor, PlateArmorBank);
// Draw a bow (gear slot)
FoleyComponent->SetSlotBank(
EAgenticFoleySlot::Gear, BowDrawBank);
// Remove armor
FoleyComponent->ClearSlot(
EAgenticFoleySlot::Armor);No component swaps. No animation retargeting. No MetaSound graph edits.
Authoring a SlotBank
A SlotBank has two fields:
| Field | Type | Purpose |
|---|---|---|
Events | TArray<FAgenticFoleySlotEventSet> | Per-event wave pools |
DefaultEventTag | FGameplayTag | Fallback for unlisted events |
Each event entry has:
| Field | Purpose |
|---|---|
EventTag | Which foley event (Foley.Event.Walk, Run, etc.) |
Waves | Pool of SoundWaves for random selection |
VolumeMultiplier | Per-event gain (0.0 - 5.0) |
Recommendations
- 5-8 waves minimum for high-frequency events (Walk, Run, Sprint) to avoid audible repetition
- 2-3 waves sufficient for low-frequency events (Jump, Land)
- VolumeMultiplier ~0.4 for walk events — equipment sits under footsteps in the mix
- VolumeMultiplier ~0.8 for impacts (Jump, Land) — louder clank on landing
Shipped SlotBanks
| SlotBank | Events | Waves | Use Case |
|---|---|---|---|
DA_SlotBank_TestArmor | 5 | ~30 | Heavy plate armor |
DA_SlotBank_Cloth | 5 | ~30 | Cloth and robes |
DA_SlotBank_ArmorLeather | 5 | ~38 | Leather armor |
A chainmail slot bank with per-event wave pools and volume multipliers:

Default Slot Configuration
Set default equipment in the component's DefaultSlotBanks map (Details panel):
DefaultSlotBanks = {
Armor → DA_SlotBank_ArmorLeather,
Gear → (empty),
Extra → (empty)
}The component loads these at BeginPlay. Runtime SetSlotBank() calls override defaults.