Class LoadingPipeline
The boot sequence, as an explicit list of weighted stages.
Why it exists: the current loading screen derives its progress from SceneManager.LoadSceneAsync, which
says nothing about content, assets or the party — so it parks at 0.99 while the real work happens (and the
player sees a frozen bar). Here, progress is the actual work: content parsing, boot-scope preloads, scene.
The pipeline only drives stages; it does not own the systems. Scene and Party are intentionally left
to the caller until GameManager is rewired onto this sequence (plan §8.1).
See CONTENT_PLATFORM_PLAN.md §7.
public static class LoadingPipeline
- Inheritance
-
objectLoadingPipeline
Properties
- BootScopeAddresses
Addresses the active world source declared for the boot scope (filled during the run).
- CurrentStage
Stage currently running, for the loading screen's label.
- IsMainThread
True when the caller runs on Unity's main thread — Unity installs a
UnitySynchronizationContextthere, and that is what makesawaitcontinuations come back to the main thread instead of the thread pool.
- Progress
0..1 across all stages.
- WorldSource
The world being started. Defaults to the Ink world; tests and tools can swap it (D16).
Methods
- Reset()
Test/tooling helper: forget the last run so the pipeline can be exercised again.
- RunAsync(CancellationToken)
Runs the stages that do not belong to scene loading. Stages: content → world scope → boot tier. Safe to call once per boot; repeated calls are ignored while running.
Must be started from Unity's main thread: Addressables operations created on a thread-pool thread never complete, and the failure mode is a silent hang — so it is checked here and reported loudly.
Events
- OnProgress
Raised whenever progress or the current stage changes.