# WBP_HUDController — Asset Implementation > **UE5 Asset:** `/Game/Framework/UI/WBP_HUDController` > **Parent Class:** `UserWidget` > **Purpose:** Root HUD widget — manages all HUD sub-widgets --- ## Create This Widget 1. Content Browser → `Content/Framework/UI/` 2. Right-click → **User Interface → Widget Blueprint** 3. Name: `WBP_HUDController` --- ## Designer Canvas Setup ``` Canvas Panel (root) ├─ WBP_InteractionPromptDisplay (bottom-center) ├─ WBP_ObjectiveDisplay (top-right) ├─ WBP_NotificationToast (top-center) ├─ HealthBar (ProgressBar) (bottom-left) [inline or sub-widget] ├─ StaminaBar (ProgressBar) (bottom-left, below health) ├─ AmmoDisplay (TextBlock) (bottom-right) ├─ Crosshair (Image) (center) └─ WBP_DiegeticHUDFrame (full screen, behind everything) ``` --- ## What to Wire ### Event: Event Construct ``` [Event Construct] ├─ Get Owning Player Pawn → Store as CachedPawn ├─ Get Pawn → GetComponentByClass(BPC_HealthSystem) → Bind OnHealthChanged ├─ GetComponentByClass(BPC_StaminaSystem) → Bind OnStaminaChanged ├─ Get GameState → Cast to GS_CoreGameState → Bind OnObjectiveTagsChanged └─ Get GameInstance → Cast to GI_GameFramework → Bind OnGamePhaseChanged ``` ### Health Binding (Custom Event) ``` [OnHealthChanged(Current, Max, Delta)] ├─ HealthBar → Set Percent(Current / Max) ├─ Branch: Delta < 0? │ True → Play Animation (DamageVignette) └─ Branch: Current <= 0? └─ Call WBP_ScreenEffectController → PlayDeathEffect ``` ### GamePhase Binding ``` [OnGamePhaseChanged(NewPhase)] ├─ Switch on NewPhase: │ MainMenu → Hide HUD │ InGame → Show HUD │ Paused → Dim HUD, show pause overlay │ Cutscene → Hide HUD │ DeathLoop → Show death screen ``` --- ## Test It - [ ] PIE with player pawn: HUD displays - [ ] Take damage: health bar updates - [ ] Sprint: stamina bar drains - [ ] Open menu: HUD hides/disables