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
InitializationPipelineProfileCreator
Assembly: Serenity.UnityInitializationPipeline.Infrastructure.Editor.dll
Syntax
public static class InitializationPipelineProfileCreator
Methods
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
Returns
Computes what Create(Input) would do without mutating the project.
Declaration
public static InitializationPipelineProfileCreator.PreviewResult Preview(InitializationPipelineProfileCreator.Input input)
Parameters
Returns
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
Returns
Declaration
public static SerenityCreationValidationResult Validate(InitializationPipelineProfileCreator.Input input)
Parameters
Returns
| Type |
Description |
| SerenityCreationValidationResult |
|