logo SERENITY
Game Systems Foundation
Search Results for

    Show / Hide Table of Contents

    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.

    In this article
    © 2026 Serenity. All Rights Reserved