Class SerenityBootTaskCatalog
Resolves the ordered initialization-pipeline task asset paths from the shipped canonical profile, so
a generated boot scene's MinimalLoopOptions.BootTaskAssetPaths can be filled from real project
data instead of staying empty. Reads the profile's Tasks array via UnityEditor.SerializedObject
rather than a typed UnityInitializationPipelineProfile reference, so the Create Game module does
not need an asmdef dependency on the InitializationPipeline module for this one read. The selection-aware
overload is two halves: Serenity.CreateGame.Infrastructure.Editor.BootTaskSelectionRules subtracts an unselected attributed system's
task, then Serenity.CreateGame.Infrastructure.Editor.BootTaskSequenceRules adds back a selected system's task the shipped profile
never carried (or no longer carries) — resolving each such task's asset path here, via
Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.FindExistingInstallTask(System.String,System.String@,System.Collections.Generic.List{System.String}@) first and
Serenity.Global.Infrastructure.Editor.InitializationPipeline.InstallTaskAuthoring.CreateInstallTaskAsset(System.String,System.String,System.String@) only when no shipped asset exists for it, and
placing it at Serenity.CreateGame.Infrastructure.Editor.BootTaskCanonicalOrder's deterministic position for it.
Inherited Members
Namespace: Serenity.CreateGame.Infrastructure.Editor
Assembly: Serenity.UnityCreateGame.Infrastructure.Editor.dll
Syntax
public static class SerenityBootTaskCatalog
Methods
TryResolveBootTaskAssetPaths(IReadOnlyCollection<string>, IReadOnlyList<SerenityInstallableSystem>, out IReadOnlyList<string>, out string)
Resolves Serenity.CreateGame.Infrastructure.Editor.SerenityBootTaskCatalog.ShippedProfilePath's task asset paths, drops every attributed system's task
whose install method is not in selectedInstallMethodNames — and every task that
merely REQUIRES such a system (Serenity.CreateGame.Infrastructure.Editor.BootTaskRequirements) — through
FilterBySelection(IReadOnlyList<string>, Func<string, string>, IReadOnlyCollection<string>, IReadOnlyCollection<string>, Func<string, string>),
then adds back a selected system's task the shipped profile never carried in the first place
(InsertMissingSelectedTasks(IReadOnlyList<string>, IReadOnlyList<SerenityInstallableSystem>, Func<string, string>, Func<SerenityInstallableSystem, string>, IReadOnlyList<string>)). A generated boot scene's pipeline
then runs every infrastructure task plus exactly the systems the reader actually selected, however
the shipped profile itself is authored.
Declaration
public static bool TryResolveBootTaskAssetPaths(IReadOnlyCollection<string> selectedInstallMethodNames, IReadOnlyList<SerenityInstallableSystem> catalog, out IReadOnlyList<string> taskAssetPaths, out string error)
Parameters
| Type | Name | Description |
|---|---|---|
| IReadOnlyCollection<string> | selectedInstallMethodNames | The systems the reader selected. Null keeps every task unfiltered and skips the additive pass entirely, matching TryResolveBootTaskAssetPaths(out IReadOnlyList<string>, out string). |
| IReadOnlyList<SerenityInstallableSystem> | catalog | Every attributed installable system — supplies the attributed-name set the subtractive filter needs; a selected system missing its task is placed additively at Serenity.CreateGame.Infrastructure.Editor.BootTaskCanonicalOrder's position for it. |
| IReadOnlyList<string> | taskAssetPaths | |
| string | error |
Returns
| Type | Description |
|---|---|
| bool |
TryResolveBootTaskAssetPaths(out IReadOnlyList<string>, out string)
Resolves the ordered task asset paths from Serenity.CreateGame.Infrastructure.Editor.SerenityBootTaskCatalog.ShippedProfilePath. Returns false
with an empty list and a caller-visible error when the profile is missing or its
serialized layout no longer matches.
Declaration
public static bool TryResolveBootTaskAssetPaths(out IReadOnlyList<string> taskAssetPaths, out string error)
Parameters
| Type | Name | Description |
|---|---|---|
| IReadOnlyList<string> | taskAssetPaths | |
| string | error |
Returns
| Type | Description |
|---|---|
| bool |
TryResolveShippedBootTaskAssetPaths(IReadOnlyCollection<string>, IReadOnlyList<SerenityInstallableSystem>, out IReadOnlyList<string>, out string)
The SUBTRACTIVE half alone, over Serenity.CreateGame.Infrastructure.Editor.SerenityBootTaskCatalog.ShippedProfilePath: the shipped boot sequence
selectedInstallMethodNames calls for, as SHIPPED paths, with nothing added and
nothing created. TryResolveBootTaskAssetPaths(IReadOnlyCollection<string>, IReadOnlyList<SerenityInstallableSystem>, out IReadOnlyList<string>, out string)
resolves-or-creates a task asset for a selected system the profile does not carry, which is exactly
what a caller comparing a project's existing profile against the shipped one must NOT do — it needs
to know what the shipped sequence holds, then adopt it, not author new package content on the way.
Declaration
public static bool TryResolveShippedBootTaskAssetPaths(IReadOnlyCollection<string> selectedInstallMethodNames, IReadOnlyList<SerenityInstallableSystem> catalog, out IReadOnlyList<string> taskAssetPaths, out string error)
Parameters
| Type | Name | Description |
|---|---|---|
| IReadOnlyCollection<string> | selectedInstallMethodNames | |
| IReadOnlyList<SerenityInstallableSystem> | catalog | |
| IReadOnlyList<string> | taskAssetPaths | |
| string | error |
Returns
| Type | Description |
|---|---|
| bool |