logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    Namespace Serenity.InitializationPipeline.Infrastructure.Editor.Builder

    Classes

    CreateInitializationPipelineProfileWindow

    Step-by-step window for creating (or updating) one project's UnityInitializationPipelineProfile — the ordered list of install tasks run at boot. The stepped-wizard 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. It never mutates an asset itself: the window only collects input and renders results, InitializationPipelineProfileCreator does the actual validation and generation work.

    Reuses the whole task-authoring ecosystem instead of reimplementing it. A "new install task" row creates its task asset through the exact same Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring engine every aggregate wizard's embedded "Initialization Pipeline Task" section already uses. The Summary step's dry-run summary runs the exact same InitializationPipelineCriticalityRule both InitializationPipelineService.RunAsync and SerenityInitPipelineSimulatorWindow use, via PreviewFinalTaskOrder(Input) — and offers an "Open Pipeline Simulator" button into that same window for interactive fail-injection dry-runs this wizard's own inline summary does not attempt (it always assumes every task succeeds).

    InitializationPipelineProfileCreator

    Generates (or updates) one project's UnityInitializationPipelineProfile asset, resolved by Id within OutputFolderPath — the same by-Id-in-folder pattern GameModeSettingsCreator/LoggingProfileCreator use, because UnitySerenityInstaller.InitializationPipelineProfile is assigned directly on the composition root rather than discovered by Addressables label (verified by reading UnitySerenityInstaller.InstallInitializationPipeline: a null field logs a warning and returns — there is no label-based fallback), so more than one profile can legitimately exist per project (e.g. one per build target or test harness).

    Insertion, never replacement. Every authored task row is appended (or prepended, per Insertion) into the target profile's EXISTING Tasks list via Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.InsertTaskIntoProfile(Serenity.InitializationPipeline.InterfaceAdapters.UnityInitializationPipelineProfile,Serenity.Global.Infrastructure.Settings.UnityTaskDefinition,System.Int32,System.String@) — the exact same engine every aggregate wizard's embedded "Initialization Pipeline Task" section (InstallTaskSectionGui) already uses to insert its own install task into a chosen profile. This wizard never wholesale-replaces a profile's Tasks array: doing so would silently discard whatever those other wizards already inserted into the SAME profile in earlier runs — the entire reason Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring exists as a shared, position-aware insertion engine rather than each wizard writing its own array.

    Two kinds of row, one insertion path. A row either creates a brand-new UnityReflectionCallTaskDefinition that invokes a UnitySerenityInstaller.InstallXxx() method (delegated to Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.CreateInstallTaskAsset(System.String,System.String,System.String@) — this engine never builds that asset itself) or references an already-existing UnityTaskDefinition asset picked from the project (created earlier by this wizard, another wizard's embedded section, or hand-authored). Both kinds land in the profile through the exact same Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.InsertTaskIntoProfile(Serenity.InitializationPipeline.InterfaceAdapters.UnityInitializationPipelineProfile,Serenity.Global.Infrastructure.Settings.UnityTaskDefinition,System.Int32,System.String@) call, in the exact order authored.

    A wizard window collecting input and rendering results ships in a separate file (CreateInitializationPipelineProfileWindow); every asset mutation lives here.

    InitializationPipelineProfileCreator.Input

    Everything needed to create or update one project's initialization pipeline profile.

    InitializationPipelineProfileCreator.PreviewResult

    Read-only summary of what a Create(Input) call would do. Never mutates the project.

    InitializationPipelineProfileCreator.ProjectedTaskInfo

    One task's projected identity/criticality/weight in the final, post-run task order — the shape InitializationPipelineCriticalityRule.Simulate consumes for a dry-run preview.

    InitializationPipelineProfileCreator.Result

    Outcome of a Create(Input) call.

    InitializationPipelineProfileCreator.TaskRowInput

    One authored task row.

    InitializationPipelineProfileCreator.TaskRowPreview

    Read-only summary of what Create(Input) would do for one row.

    InitializationPipelineProfileCreator.TaskRowResult

    Outcome for a single authored row within a InitializationPipelineProfileCreator.Result.

    SerenityInitPipelineSimulatorWindow

    Dry-run simulator for a boot pipeline (UnityInitializationPipelineProfile): mark any tasks as "will fail" and run a simulated boot to see how the criticality rules play out — a critical failure halts the boot and skips the rest, while a non-critical failure is logged and boot continues.
    Designers get to answer "what happens if this task fails?" and "how far does the progress bar get?" without actually running (or breaking) the game.

    Enums

    CreateInitializationPipelineProfileWindow.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.

    InitializationPipelineProfileCreator.InsertPosition

    Where a batch of authored rows lands relative to a target profile's pre-existing tasks.

    InitializationPipelineProfileCreator.TaskRowKind

    Whether a task row creates a brand-new install task or references an existing asset.

    In this article
    © 2026 Serenity. All Rights Reserved