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.