Namespace Serenity.CreateGame.Infrastructure.Editor
Classes
CreateGameGeneratedAssets
Every generated-asset path Generate(string, CreateGameGeneratedAssets) wires onto the boot
scene's installer. Caller-built — typically from a SerenityRecipeReport's
RecipeAssetAction.AssetPath entries after running the minimal-loop recipe through
SerenityRecipeEngine. The generator only loads these paths into asset references; it never
derives or re-computes them itself.
DefaultSettingsAssetCreator
Creates a default settings asset for a system with no settings in the project yet, when following its
Hub tool is not a reliable way to get one — either the Hub tool's own primary output is something else
(CreatesSettingsViaHubTool is false: Feedback and
Logging today) or the system ships no shipped singleton to adopt at all. Resolves the concrete type
from SettingsTypeName by simple name
(GetTypeFromCurrentDomainAssemblies(string) — the same resolver
UnitySerenityInstallerInstallableSystemTests already validates every attributed system's
SettingsTypeName against), so this module never needs a compile-time reference to every
system's settings type. Follows FeedbackCreator/GameSaveCreator's
transaction shape: on any failure, everything this call created is rolled back and the project is left
untouched.
HubToolLaunchRules
Resolves a SerenityHubToolCatalog entry's menu path by hub-tool id. Kept IMGUI-free so a non-IMGUI caller (Serenity.CreateGame.Infrastructure.Editor.Steps.SettingsRowActionExecutor) can resolve a hub-tool id safely and fall back to logging NoWizardCatalogedNotice instead of drawing anything.
InitializeSerenityWindow
One tool replacing both the former Setup Assistant and Create Game entries: lets the reader opt any
number of SerenityInstallableSystems in, reports where each selected system's settings
asset currently stands with a one-click way to Adopt the shipped one, author their own, or fix it (the
Settings step), then wires the initialization pipeline profile and every selected system's boot task
(Serenity.CreateGame.Infrastructure.Editor.Wiring.ProjectWiringRunner) — never a system's own settings or a menu; those belong to the
Settings step and the Menu Manager wizard. Opened via Tools ▸ Serenity ▸ Initialize Serenity.
The stepped-wizard scaffolding — the header and breadcrumb, the body scroll, the footer and its error
gate — comes from Serenity.Global.Infrastructure.Editor.SerenityStepWizardWindow`1; this window declares only its own step
table, the manual-alternative notice it draws above the footer, and what the primary action does.
PersistenceRowActions
Executes the Settings step's Create and Edit actions for a row whose system installs at bootstrap (Persistence today) — it has no Hub wizard to route through, so Create opens PersistenceBackendCreationMenu and Edit pings/selects the asset directly.
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.
SerenityCreateGameSceneGenerator
Orchestrates a full Create Game run: the gameplay scene, the boot scene, and the installer wiring that
links them together, under a single output root. Mirrors SerenitySampleSceneGenerator: a static
class, a SerenityCreateGameSceneGenerator.Result DTO, created-paths rollback via Serenity.Global.Infrastructure.Editor.SerenityAssetCreationTransaction,
and no dialogs — this is the testable API a future menu-item wrapper calls.
The boot scene's InitializationScene field must point at the boot scene itself, which does not
exist as a UnityEditor.SceneAsset until after its first save. This runs the boot scene in two passes:
the first save leaves InitializationScene null (only its string-typed sibling
InitializationScenePath is known ahead of time, since that one is just a path, not an object
reference). Once the save gives the scene a resolvable UnityEditor.SceneAsset, a second wiring pass
sets the reference on the still-loaded scene and re-saves it — cheaper than closing and reopening the
scene, since UnityEditor.SceneManagement.EditorSceneManager.SaveScene(UnityEngine.SceneManagement.Scene,System.String,System.Boolean)
does not unload it.
SerenityCreateGameSceneGenerator.Result
Outcome of a Generate(string, CreateGameGeneratedAssets) call. The inherited Serenity.Global.Infrastructure.Editor.SerenityCreationResult.CreatedPaths is empty on a rerun that only updated already-existing scenes in place.
SettingsAdoptionConfirmationGui
Builds the confirmation dialog title and message for the Settings step's Adopt and Adopt All actions, from a SystemAdoptionPlan — pure string formatting, kept out of the step so it stays about orchestrating row actions rather than composing dialog copy.
SettingsRowAction
The one primary action a settings row's SerenitySystemConfigurationState resolves to, as decided by SettingsRowActionRules.
SettingsRowActionRules
The pure decision behind the Settings step's per-row button(s): exactly one primary action per SerenitySystemConfigurationState (Resolve(SerenitySystemConfigurationRow)), plus an optional secondary action (ResolveSecondary(SerenitySystemConfigurationRow, int)) — so the mapping is testable without drawing anything.
SettingsRowAssetsBadgeRules
The Settings step's second per-row badge — independent of SettingsRowBadgeRules's own
settings-state badge — reporting how many of a system's shipped assets remain unadopted:
Serenity.CreateGame.Infrastructure.Editor.SettingsRowAssetsBadgeRules.NoShippedAssetsText when the system ships none at all, Serenity.CreateGame.Infrastructure.Editor.SettingsRowAssetsBadgeRules.AssetsAdoptedText
once every shipped asset has been mirrored into the project, or a count of what is left otherwise. Pure
— no AssetDatabase access; InitializeSerenitySettingsStep supplies both counts from
its own ShippedSystemAssetCatalog scan.
SettingsRowBadgeRules
The Settings step's per-row status badge text and color. A row whose system installs at bootstrap (Persistence today) reads differently while Missing: nothing configured yet is expected and unremarkable (a factory default backend applies), not a warning — so it shows "Default (local file)" in the informational accent color instead of "Missing" in the warning color every other row's Missing state uses.
SettingsRowBootTaskWiringRules
The Settings step's per-row boot-task-wiring line: whether the system's install task already sits in a project-owned initialization pipeline profile, and — when it does but the row's own settings asset is still Missing — the follow-up warning explaining that the service will start with no configuration at all.
SettingsRowDependencyGui
Draws a Settings step row's dependency-order affordances: the muted "Depends on: A, B" line, and a warning glyph (with a tooltip naming which ones) when any of a system's dependencies is not yet InProject. IMGUI presentation only — the decision behind both lines lives in SettingsRowDependencyRules, kept separate so it stays testable on its own.
SettingsRowDependencyRules
The pure decision behind SettingsRowDependencyGui's row: the "Depends on: A, B" line text, and the not-yet-ready dependency names behind its warning glyph's tooltip — extracted out of the drawing itself so the mapping is testable without a UnityEngine.GUIContent icon to draw.
Enums
InitializeSerenityWindow.WizardStep
Public rather than private because C# requires a class's base type to be at least as accessible as the class itself, and this enum is that base type's argument.
SettingsRowActionKind
The kind of primary action a SerenitySystemConfigurationRow offers, one per SerenitySystemConfigurationState — resolved by SettingsRowActionRules.