Namespace Serenity.Character.Infrastructure.Editor.Builder
Classes
CharacterConfigCreator
Generates (or updates) a single CharacterConfigSO archetype asset from a validated wizard input. Mirrors Serenity.AssetPrefetcher.Infrastructure.Editor.Builder.PrefetchPolicyCreator's per-profile shape: static class, Input/Result DTOs, Validate/Create/Preview, created-paths rollback on failure — folder-shape validation and provisioning borrowed from the shared SettingsAssetAuthoring engine rather than a private copy of that logic.
Unlike a project-wide settings singleton, CharacterConfigSO assets are explicitly multi-instance
by design — UnityCharacterInstaller loads every asset tagged type:character and applies all
of them, one per archetype. There is no project-wide "the one" asset to resolve: each archetype resolves
independently to an existing asset with a matching Id already living in
FolderPath (updated in place) or a brand-new asset created there — mirroring
PrefetchPolicyCreator's per-profile resolution, not GameCameraSettingsCreator's singleton one.
CharacterConfigCreator.Input
Everything needed to create or update one archetype asset.
CharacterConfigCreator.PreviewResult
A read-only summary of what a Create(Input) call would do, for a Preview step. Never mutates the project.
CharacterConfigCreator.Result
Outcome of a Create(Input) call.
CreateCharacterWindow
Step-by-step window for creating (or editing) one CharacterConfigSO archetype asset. Mirrors Serenity.GameCamera.Infrastructure.Editor.Builder.CreateGameCameraSettingsWindow's shape: the window only collects input and renders results, CharacterConfigCreator does the actual validation and generation work.
Enums
MountTarget
The infrastructure element a Character archetype's prefab is mounted on, authored by
CharacterConfigCreator. Closed by design: GameRail and
StageSpawnPoint are structurally asymmetric today — one mutates the prefab, the other only
guides authoring toward Wave data — so a shared discovery abstraction (e.g. an IMountable
interface resolved via TypeCache) is not justified. Extract one only once a third
component-shaped mount actually appears.