logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    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":

    1. Open the Audio Mixer window and select a source group (e.g. SFX or Voice).
    2. Add a Send effect to that source group.
    3. Set the Send's target to this loop group's Receive effect.
    4. 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.

    Inheritance
    object
    CreateAudioMixerEffectLoopWindow
    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()
    In this article
    © 2026 Serenity. All Rights Reserved