logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Namespace Serenity.SoundMixer.Installation.Settings.Editor.Builder

    Classes

    CreateSoundMixerSettingsWindow

    Step-by-step window for creating (or updating) the project-wide UnitySoundMixerSettings asset. The stepped-wizard scaffolding — the header and breadcrumb, the body scroll, the footer and its error gate, and the select-and-ping a finished run ends with — comes from Serenity.Global.Infrastructure.Editor.SerenityStepWizardWindow`1; this window declares only its own step table and what the primary action does. Get-or-create target resolution goes through Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAsset and Serenity.Global.Infrastructure.Editor.SerenityWizardTargetAssetGui. The window only collects input and renders results; SoundMixerSettingsCreator does the actual validation and generation work, including the EffectLoops/ExposedParameters merge contracts described on its type doc comment.

    SoundMixerExposedParametersTableGui

    The exposed-parameter row table (mixer parameter name to GameSettings Id) drawn by CreateSoundMixerSettingsWindow's Parameters step. Mirrors Serenity.Score.Infrastructure.Editor.ScoreMetricsTableGui's row/Add/Remove/undo shape, applied to ConfigurationEntry rows, with live duplicate/empty-name validation via Serenity.Global.Infrastructure.Editor.SerenityWizardFieldRules.UniqueWithinRows(System.Int32,System.Collections.Generic.IReadOnlyList{System.String},System.String,System.Func{System.Int32,System.String,System.String}). Pure IMGUI presentation: the caller owns the rows list and decides what (if anything) backs undo.

    SoundMixerSettingsCreator

    Generates (or updates) the project-wide UnitySoundMixerSettings asset from a single description. Runs on SingletonSettingsCreationEngine<TSettings, TInput, TResult>: this class stays the caller-facing static surface — Input/Result DTOs, ValidateIdentity/Validate/Create, ResolveSettingsContext<TSettings>(string, string) for "edit existing" detection — and forwards every member to one SoundMixerSettingsCreator.Engine instance that supplies the module's own fields. CreateSoundMixerSettingsWindow only collects input and renders results; every asset mutation lives in the engine.

    Two fields carry rerun-safe MERGE contracts instead of a plain overwrite, because both can be authored outside this wizard: EffectLoops is UNIONED (by reference) with the asset's existing list on update — see Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Engine.MergeEffectLoops(System.Collections.Generic.List{Serenity.SoundMixer.Installation.Settings.UnitySoundMixerEffectLoopDefinition},System.Collections.Generic.List{Serenity.SoundMixer.Installation.Settings.UnitySoundMixerEffectLoopDefinition}) — and ExposedParameters is applied as authoritative only for the parameter names it contains, keeping any existing row whose name the input does not mention — see Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Engine.MergeExposedParameters(System.Collections.Generic.List{Serenity.Global.Domain.Entities.ConfigurationEntry},System.Collections.Generic.List{Serenity.Global.Domain.Entities.ConfigurationEntry}). Both merges run only on Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Engine.ApplyFieldsToExisting(Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Input,Serenity.SoundMixer.Installation.Settings.UnitySoundMixerSettings), the update-only override of Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Engine.ApplyFields(Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Input,Serenity.SoundMixer.Installation.Settings.UnitySoundMixerSettings): a brand-new asset has nothing to merge into, so Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Engine.ApplyFields(Serenity.SoundMixer.Installation.Settings.Editor.Builder.SoundMixerSettingsCreator.Input,Serenity.SoundMixer.Installation.Settings.UnitySoundMixerSettings) assigns the incoming lists as-is, same as every other field.

    SoundMixerSettingsCreator.Input

    Everything needed to create or update the settings asset.

    SoundMixerSettingsCreator.Result

    Outcome of a Create(Input) call.

    Enums

    CreateSoundMixerSettingsWindow.WizardStep

    Public rather than private because C# requires a class's base type to be at least as accessible as the class itself, and this enum is that base type's argument.

    In this article
    © 2026 Serenity. All Rights Reserved