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.