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. Mirrors CreateSequencePlayerWindow's shape: the window only collects input and renders results, InitializationPipelineProfileCreator does the actual validation and generation work — this window never mutates an asset itself.

    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 Preview step's dry-run summary runs the exact same InitializationPipelineCriticalityRule both InitializationPipelineService.RunAsync and Serenity.Global.Shared.Utils.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.

    Enums

    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