Class CreateAudioMixerEffectLoopWindow
Editor tool (Tools ▸ Serenity ▸ Create ▸ Audio ▸ Create Audio Mixer Effect Loop) for building an
AudioMixer "effect loop" group: a child group whose chain is
Receive -> user effects (in order) -> Attenuation, ready to be used as a Send/Receive
routing destination.
Separation of concerns. This window only collects input and renders results, across a stepped wizard whose scaffolding — the header and breadcrumb, the body scroll, the footer and its error gate — comes from Serenity.Global.Infrastructure.Editor.SerenityStepWizardWindow`1; this window declares only its own step table and what the primary action does. All AudioMixer modification lives in AudioMixerEffectLoopCreator, and every internal Unity API call is isolated in Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor.AudioMixerEffectLoopReflectionAdapter. The loop's own fields, the effect-chain list editor, the source-group picker and the Summary are extracted collaborators — Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor.AudioMixerEffectLoopDraft, Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor.AudioMixerEffectLoopWizardEffectChainGui, Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor.AudioMixerEffectLoopWizardSourceGroupsStepGui and Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor.AudioMixerEffectLoopWizardSummaryStepGui — under the file-size ratchet.
How to use the generated loop (manual Send wiring). This tool creates only the RECEIVE side. After creating, e.g., "EchoLoop":
- Open the Audio Mixer window and select a source group (e.g. SFX or Voice).
- Add a Send effect to that source group.
- Set the Send's target to this loop group's Receive effect.
- Use the source Send's wet level to control how much is routed in, and this loop's trailing Attenuation to control the overall returned wet output.
The tool intentionally does NOT add or configure Sends on other groups, so it never mutates any group besides the new loop group and its parent relationship.
Managing an existing loop. A Loop Id another definition already owns is resolved on the Loop step through Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor.AudioMixerEffectLoopIdentity: when the run can update that definition, every field is seeded from it and Create updates it in place without a new group; when it cannot, the Loop step and the Summary block, naming the definition, before anything is written.
Namespace: Serenity.SoundMixer.Infrastructure.AudioMixerEffectLoop.Editor
Assembly: Serenity.UnitySoundMixer.Infrastructure.Editor.dll
Syntax
public class CreateAudioMixerEffectLoopWindow : SerenityStepWizardWindow<CreateAudioMixerEffectLoopWindow.WizardStep>
Constructors
CreateAudioMixerEffectLoopWindow()
Declaration
public CreateAudioMixerEffectLoopWindow()
Properties
FinishedRunPrimaryLabel
Declaration
protected override string FinishedRunPrimaryLabel { get; }
Property Value
| Type | Description |
|---|---|
| string |
PrimaryButtonLabel
Declaration
protected override string PrimaryButtonLabel { get; }
Property Value
| Type | Description |
|---|---|
| string |
WindowTitle
Declaration
protected override string WindowTitle { get; }
Property Value
| Type | Description |
|---|---|
| string |
Methods
BuildSteps()
Declaration
protected override WizardStepDescriptor<CreateAudioMixerEffectLoopWindow.WizardStep>[] BuildSteps()
Returns
| Type | Description |
|---|---|
| WizardStepDescriptor<WizardStep>[] |
OnBeforeDrawStep()
Before anything draws: rebuilds the two one-shot step collaborators — they hold no serialized state, so a domain reload drops them while the lists they wrap survive — rebuilds the parent groups whenever a run or a reimport left them stale, so every step (not only Target) reads a live list, and adopts the loop the Loop Id names.
Declaration
protected override void OnBeforeDrawStep()
OnFinishedRunPrimaryAction()
A finished run's "Create Another": a project routinely wants several effect loops, so the next one starts on the Loop step with the mixer still assigned.
Declaration
protected override void OnFinishedRunPrimaryAction()
OnPrimaryAction()
Declaration
protected override void OnPrimaryAction()
ShowWindow()
Declaration
public static void ShowWindow()