add blueprints
This commit is contained in:
169
docs/blueprints/13-polish/110_BPC_LoadingScreen.md
Normal file
169
docs/blueprints/13-polish/110_BPC_LoadingScreen.md
Normal file
@@ -0,0 +1,169 @@
|
||||
# 76 — BPC_LoadingScreen
|
||||
|
||||
## Blueprint Spec — UE 5.5–5.7
|
||||
|
||||
---
|
||||
|
||||
### Parent Class
|
||||
`ActorComponent`
|
||||
|
||||
### Dependencies
|
||||
- [`SS_SaveManager`](../05-saveload/28_SS_SaveManager.md) — Load state during transitions
|
||||
- [`BPC_PerformanceScaler`](../10-adaptive/68_BPC_PerformanceScaler.md) — Quality level for loading assets
|
||||
- [`WBP_LoadingScreen`](../06-ui/46_WBP_LoadingScreen.md) — UI widget (Phase 5)
|
||||
- [`FL_LevelStreaming`](../01-core/07_FL_LevelStreaming.md) — Level loading utilities (Phase 0)
|
||||
- [`DA_LoadingTips`](../12-content/79_DA_LoadingTips.md) — Tip data assets (Phase 12)
|
||||
|
||||
### Purpose
|
||||
Manages loading screen display and behavior during level transitions, save/load operations, and streaming scenarios. Controls visibility, progress feedback, tip rotation, background presentation, and minimum display duration. Supports seamless transitions with fade effects and asynchronous loading state tracking.
|
||||
|
||||
### Enums
|
||||
|
||||
**ELoadingScreenType**
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| LevelTransition | Full level load |
|
||||
| SaveLoad | Save/load operation |
|
||||
| Streaming | Sub-level streaming |
|
||||
| Boot | Initial game load |
|
||||
| Quick | Fast travel |
|
||||
|
||||
**ELoadingScreenState**
|
||||
|
||||
| Value | Description |
|
||||
|-------|-------------|
|
||||
| Inactive | No loading active |
|
||||
| FadingIn | Fade to black |
|
||||
| Visible | Loading displayed |
|
||||
| FadingOut | Fade from black |
|
||||
| Complete | Load done, cleanup |
|
||||
|
||||
### Structs
|
||||
|
||||
**FLoadingScreenConfig**
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| Type | ELoadingScreenType | What triggered this |
|
||||
| bShowTips | Bool | Rotate loading tips |
|
||||
| bShowProgress | Bool | Show progress bar |
|
||||
| bUseBackgroundImage | Bool | Static or image |
|
||||
| MinDisplayTime | Float | Minimum seconds shown |
|
||||
| FadeInDuration | Float | Fade to black time |
|
||||
| FadeOutDuration | Float | Fade from black time |
|
||||
| BackgroundImages | TArray\<UTexture2D\> | Optional backgrounds |
|
||||
| bAllowSkipping | Bool | Skip after load complete |
|
||||
|
||||
### Variables
|
||||
|
||||
| Name | Type | Description |
|
||||
|------|------|-------------|
|
||||
| `CurrentState` | ELoadingScreenState | Current loading state |
|
||||
| `CurrentConfig` | FLoadingScreenConfig | Active configuration |
|
||||
| `LoadingScreenWidget` | WBP_LoadingScreen | Widget reference |
|
||||
| `LoadStartTime` | Float | When load began |
|
||||
| `bIsTransitioning` | Bool | Fade in progress |
|
||||
| `RemainingTips` | TArray\<FText\> | Unshown tips pool |
|
||||
| `BackgroundIndex` | Int32 | Current background |
|
||||
| `bLoadingComplete` | Bool | Load finished flag |
|
||||
|
||||
### Functions
|
||||
|
||||
| Name | Inputs | Outputs | Description |
|
||||
|------|--------|---------|-------------|
|
||||
| `ShowLoadingScreen` | Type: ELoadingScreenType, Config: FLoadingScreenConfig | — | Start loading display |
|
||||
| `HideLoadingScreen` | — | — | End loading display |
|
||||
| `UpdateLoadingProgress` | Progress: Float, StatusText: FText | — | Update progress bar |
|
||||
| `SetLoadingMessage` | Message: FText | — | Change message text |
|
||||
| `GetNextTip` | — | FText | Get random tip |
|
||||
| `GetNextBackground` | — | UTexture2D | Cycle backgrounds |
|
||||
| `SetBootConfiguration` | — | — | Configure for initial load |
|
||||
| `SetLevelTransitionConfig` | LevelName: FName | — | Configure for level load |
|
||||
| `HandleFadeInComplete` | — | — | Fade in finished |
|
||||
| `HandleFadeOutComplete` | — | — | Fade out finished |
|
||||
| `ForceCompleteLoading` | — | — | Skip remaining time |
|
||||
| `ProcessPendingLoading` | — | — | Handle load queue |
|
||||
| `LogLoadingComplete` | LoadTime: Float | — | Log load duration |
|
||||
|
||||
### Blueprint Flow
|
||||
|
||||
```
|
||||
[ShowLoadingScreen]
|
||||
└─► If bIsTransitioning: return (queue if needed)
|
||||
└─► Set CurrentConfig = Config
|
||||
└─► LoadStartTime = Current Time
|
||||
└─► FadeIn:
|
||||
Create WBP_LoadingScreen
|
||||
Add to viewport (topmost Z-order)
|
||||
Play fade in animation (FadeInDuration)
|
||||
On anim complete:
|
||||
CurrentState = Visible
|
||||
bIsTransitioning = false
|
||||
└─► If Type == Boot:
|
||||
Show game logo, company logo (fade sequence)
|
||||
└─► Start rotating tips timer (every 8 seconds):
|
||||
GetNextTip() -> Update loading message
|
||||
└─► If bUseBackgroundImage:
|
||||
Set static or rotating backgrounds
|
||||
|
||||
[UpdateLoadingProgress]
|
||||
└─► If Not Visible: return
|
||||
└─► Clamp Progress 0–1
|
||||
└─► WBP_LoadingScreen.UpdateProgress(Progress, StatusText)
|
||||
|
||||
[HideLoadingScreen]
|
||||
└─► If Complete animation not playing && elapsed < MinDisplayTime:
|
||||
Delay until MinDisplayTime reached
|
||||
└─► CurrentState = FadingOut
|
||||
└─► bIsTransitioning = true
|
||||
└─► Play fade out animation (FadeOutDuration)
|
||||
└─► On anim complete:
|
||||
Remove WBP_LoadingScreen from viewport
|
||||
CurrentState = Inactive
|
||||
bIsTransitioning = false
|
||||
LogLoadingComplete(ElapsedTime)
|
||||
Broadcast OnLoadingComplete()
|
||||
|
||||
[GetNextTip]
|
||||
└─► If RemainingTips is empty:
|
||||
Refill from DA_LoadingTips
|
||||
└─► Remove random tip from RemainingTips
|
||||
└─► Return tip text
|
||||
|
||||
[Level Transition Flow]
|
||||
└─► Level requested
|
||||
└─► ShowLoadingScreen(LevelTransition)
|
||||
└─► Asynchronous level loading:
|
||||
Bind to load progress delegate
|
||||
UpdateLoadingProgress(Progress, "Loading...")
|
||||
└─► Level fully loaded:
|
||||
Set bLoadingComplete = true
|
||||
HideLoadingScreen()
|
||||
```
|
||||
|
||||
### Event Dispatchers
|
||||
|
||||
| Name | Payload | Description |
|
||||
|------|---------|-------------|
|
||||
| `OnLoadingStarted` | Type: ELoadingScreenType | Load began |
|
||||
| `OnLoadingComplete` | — | Load finished, fade out |
|
||||
|
||||
### Communications With
|
||||
|
||||
| Target | Method | Why |
|
||||
|--------|--------|-----|
|
||||
| [`WBP_LoadingScreen`](../06-ui/46_WBP_LoadingScreen.md) | Widget reference | Display control |
|
||||
| [`FL_LevelStreaming`](../01-core/07_FL_LevelStreaming.md) | Direct call | Level load progress |
|
||||
| [`SS_SaveManager`](../05-saveload/28_SS_SaveManager.md) | Direct call | Save/load operations |
|
||||
| [`BPC_PerformanceScaler`](../10-adaptive/68_BPC_PerformanceScaler.md) | Direct call | Quality during load |
|
||||
| [`DA_LoadingTips`](../12-content/79_DA_LoadingTips.md) | Data asset | Tip content |
|
||||
|
||||
### Reuse Notes
|
||||
- Config-driven for different loading contexts (boot, level, save)
|
||||
- Tip rotation prevents repetition during long loads
|
||||
- MinDisplayTime prevents flash-loading on fast systems
|
||||
- Background cycling adds visual variety
|
||||
- Fade in/out duration configurable per context
|
||||
- Asynchronous progress bound to actual load completion
|
||||
- Compatible with both synchronous and async level loading
|
||||
Reference in New Issue
Block a user