logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

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

    Inheritance
    object
    InitializationPipelineProfileCreator
    Inherited Members
    object.ToString()
    object.Equals(object)
    object.Equals(object, object)
    object.ReferenceEquals(object, object)
    object.GetHashCode()
    object.GetType()
    object.MemberwiseClone()
    Namespace: Serenity.InitializationPipeline.Infrastructure.Editor.Builder
    Assembly: Serenity.UnityInitializationPipeline.Infrastructure.Editor.dll
    Syntax
    public static class InitializationPipelineProfileCreator

    Methods

    Create(Input)

    Validates the request, resolves-or-creates the profile by Id, materializes every row into a concrete UnityTaskDefinition (creating a new install task asset for NewInstallTask rows via Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.CreateInstallTaskAsset(System.String,System.String,System.String@)), then inserts every materialized task into the profile in authored order via Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.InsertTaskIntoProfile(Serenity.InitializationPipeline.InterfaceAdapters.UnityInitializationPipelineProfile,Serenity.Global.Infrastructure.Settings.UnityTaskDefinition,System.Int32,System.String@) — on the side of the profile's pre-existing tasks chosen by Insertion. On any failure every mutation is rolled back: created assets/folders are deleted (with Serenity.Global.Infrastructure.Editor.Validation.References.SerenitySafeDeleteScope suppressed — the profile may hold live, not-yet-saved references to task assets this same call just created, which would otherwise trip the safe-delete referencer scan), their Addressables entries removed, and an already-existing profile has its pre-call Id/Tasks restored verbatim.

    Declaration
    public static InitializationPipelineProfileCreator.Result Create(InitializationPipelineProfileCreator.Input input)
    Parameters
    Type Name Description
    InitializationPipelineProfileCreator.Input input
    Returns
    Type Description
    InitializationPipelineProfileCreator.Result

    Preview(Input)

    Computes what Create(Input) would do without mutating the project.

    Declaration
    public static InitializationPipelineProfileCreator.PreviewResult Preview(InitializationPipelineProfileCreator.Input input)
    Parameters
    Type Name Description
    InitializationPipelineProfileCreator.Input input
    Returns
    Type Description
    InitializationPipelineProfileCreator.PreviewResult

    PreviewFinalTaskOrder(Input)

    Projects the FULL post-run task order — the target profile's current tasks (if it already exists) plus every authored row, spliced on the side chosen by Insertion — as the shape InitializationPipelineCriticalityRule.Simulate consumes. Read-only: never mutates the project. Reused by CreateInitializationPipelineProfileWindow's Preview step for an inline dry-run summary through the SAME rule InitializationPipelineService.RunAsync and SerenityInitPipelineSimulatorWindow already use, so the summary can never drift from runtime behavior. A NewInstallTask row projects the exact criticality/weight Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.CreateInstallTaskAsset(System.String,System.String,System.String@) hardcodes (Critical, weight 1f) since the asset does not exist yet to read them from.

    Declaration
    public static List<InitializationPipelineProfileCreator.ProjectedTaskInfo> PreviewFinalTaskOrder(InitializationPipelineProfileCreator.Input input)
    Parameters
    Type Name Description
    InitializationPipelineProfileCreator.Input input
    Returns
    Type Description
    List<InitializationPipelineProfileCreator.ProjectedTaskInfo>

    Validate(Input)

    Declaration
    public static SerenityCreationValidationResult Validate(InitializationPipelineProfileCreator.Input input)
    Parameters
    Type Name Description
    InitializationPipelineProfileCreator.Input input
    Returns
    Type Description
    SerenityCreationValidationResult
    In this article
    © 2026 Serenity. All Rights Reserved