// Copyright Echo Devgroup #include "UI/HUD/AuraHUD.h" #include "Blueprint/UserWidget.h" #include "UI/Widget/AuraUserWidget.h" #include "UI/WidgetController/AttributeMenuWidgetController.h" #include "UI/WidgetController/OverlayWidgetController.h" UOverlayWidgetController* AAuraHUD::GetOverlayWidgetController(const FWidgetControllerParams& WCParams) { if (OverlayWidgetController == nullptr) { OverlayWidgetController = NewObject(this, OverlayWidgetControllerClass); OverlayWidgetController->SetWidgetControllerParams(WCParams); OverlayWidgetController->BindCallbacksToDependencies(); //UE_LOG(LogTemp, Warning, TEXT("AuraHUD - GetOverlayWidgetController - Return new Controller")); } //UE_LOG(LogTemp, Warning, TEXT("AuraHUD - GetOverlayWidgetController - Controller already exists")); //If it exists, return existing OverlayWidgetController return OverlayWidgetController; } UAttributeMenuWidgetController* AAuraHUD::GetAttributeMenuWidgetController(const FWidgetControllerParams& WCParams) { if (AttributeMenuWidgetController == nullptr) { AttributeMenuWidgetController = NewObject(this, AttributeMenuWidgetControllerClass); AttributeMenuWidgetController->SetWidgetControllerParams(WCParams); AttributeMenuWidgetController->BindCallbacksToDependencies(); } return AttributeMenuWidgetController; } void AAuraHUD::InitOverlay(APlayerController* PC, APlayerState* PS, UAbilitySystemComponent* ASC, UAttributeSet* AS) { checkf(OverlayWidgetClass, TEXT("Overlay Widget Class initialized, please fill out BP_AuraHUD")); checkf(OverlayWidgetControllerClass, TEXT("Overlay Widget Controller Class initialized, Please fill out BP_AuraHUD")); UUserWidget* Widget = CreateWidget(GetWorld(),OverlayWidgetClass); OverlayWidget = Cast(Widget); const FWidgetControllerParams WidgetControllerParams(PC, PS, ASC, AS); UOverlayWidgetController* WidgetController = GetOverlayWidgetController(WidgetControllerParams); //UE_LOG(LogTemp, Warning, TEXT("AuraHUD - WidgetController")); OverlayWidget->SetWidgetController(WidgetController); WidgetController->BroadcastInitialValues(); //UE_LOG(LogTemp, Warning, TEXT("AuraHUD - Add to Viewport")); Widget->AddToViewport(); }