TSharedRef<SWidget> UMenuAnchor::HandleGetMenuContent() { TSharedPtr<SWidget> SlateMenuWidget; if ( OnGetMenuContentEvent.IsBound() ) { UWidget* MenuWidget = OnGetMenuContentEvent.Execute(); if ( MenuWidget ) { SlateMenuWidget = MenuWidget->TakeWidget(); } } else { if ( MenuClass != nullptr && !MenuClass->HasAnyClassFlags(CLASS_Abstract) ) { UUserWidget* MenuWidget = CreateWidget<UUserWidget>(GetWorld(), MenuClass); if ( MenuWidget ) { SlateMenuWidget = MenuWidget->TakeWidget(); } } } return SlateMenuWidget.IsValid() ? SlateMenuWidget.ToSharedRef() : SNullWidget::NullWidget; }
void FWidgetBlueprintEditor::UpdatePreview(UBlueprint* InBlueprint, bool bInForceFullUpdate) { UUserWidget* PreviewActor = GetPreview(); // Signal that we're going to be constructing editor components if ( InBlueprint != nullptr && InBlueprint->SimpleConstructionScript != nullptr ) { InBlueprint->SimpleConstructionScript->BeginEditorComponentConstruction(); } // If the Blueprint is changing if ( InBlueprint != PreviewBlueprint || bInForceFullUpdate ) { // Destroy the previous actor instance DestroyPreview(); // Save the Blueprint we're creating a preview for PreviewBlueprint = Cast<UWidgetBlueprint>(InBlueprint); // Update the generated class'es widget tree to match the blueprint tree. That way the preview can update // without needing to do a full recompile. Cast<UWidgetBlueprintGeneratedClass>(PreviewBlueprint->GeneratedClass)->DesignerWidgetTree = DuplicateObject<UWidgetTree>(PreviewBlueprint->WidgetTree, PreviewBlueprint->GeneratedClass); PreviewActor = CreateWidget<UUserWidget>(PreviewScene.GetWorld(), PreviewBlueprint->GeneratedClass); PreviewActor->SetFlags(RF_Transactional); // Configure all the widgets to be set to design time. PreviewActor->SetDesignerFlags(GetCurrentDesignerFlags()); // Store a reference to the preview actor. PreviewWidgetPtr = PreviewActor; } OnWidgetPreviewUpdated.Broadcast(); }
void FWidgetBlueprintEditor::DestroyPreview() { UUserWidget* PreviewActor = GetPreview(); if ( PreviewActor != nullptr ) { check(PreviewScene.GetWorld()); PreviewActor->MarkPendingKill(); } }
class UUserWidget* UHMIYCGameInstance::CreateUIWidget( const FString& Path ) { UClass* WidgetClass = StaticLoadClass( UUserWidget::StaticClass(), nullptr, *Path ); UUserWidget* Widget = CreateWidget<UUserWidget>( GetWorld(), WidgetClass ); Widget->AddToViewport( UI_ZORDER ); Widget->SetVisibility( ESlateVisibility::Hidden ); return Widget; }
UWidget* FWidgetReference::GetPreview() const { if ( WidgetEditor.IsValid() && TemplateHandle.IsValid() ) { UUserWidget* PreviewRoot = WidgetEditor.Pin()->GetPreview(); if ( PreviewRoot && TemplateHandle->Widget.Get() ) { UWidget* PreviewWidget = PreviewRoot->GetHandleFromName(TemplateHandle->Widget.Get()->GetName()); return PreviewWidget; } } return NULL; }
TArray<UUserWidget*> UGUIDynamicCanvas::FindWidgetsWithClass(TSubclassOf<UUserWidget> WidgetClass) const { TArray<UUserWidget*> Result; if (WidgetCanvasPanel.IsValid()) { for (int32 Index = 0; Index < WidgetCanvasPanel->GetChildrenCount(); Index++) { UUserWidget* Widget = Cast<UUserWidget>(WidgetCanvasPanel->GetChildAt(Index)); if (Widget && Widget->IsA(WidgetClass)) { Result.Add(Widget); } } } return Result; }
void APoseidonCharacter::EndScene() { if (IsEndScene == false) { PlayerHUD->ChangeCrosshair(EReticleEnum::RE_NO_RETICLE); APlayerController* PlayerController = UGameplayStatics::GetPlayerController(GetWorld(), 0); UUserWidget* WidgetInstance = CreateWidget<UUserWidget>(PlayerController, WidgetCreditsClass); WidgetInstance->AddToViewport(); FName shouldLoop = FName("ShouldLoop"); UBoolProperty* BoolProp = FindField<UBoolProperty>(WidgetInstance->GetClass(), shouldLoop); if (BoolProp != NULL) { BoolProp->SetPropertyValue_InContainer(WidgetInstance, false); } IsEndScene = true; } }
void GetBindableObjects(UWidget* RootWidget, TArray<FObjectAndDisplayName>& BindableObjects) { TArray<UWidget*> ToTraverse; ToTraverse.Add(RootWidget); while (ToTraverse.Num() > 0) { UWidget* Widget = ToTraverse[0]; ToTraverse.RemoveAt(0); BindableObjects.Add(FObjectAndDisplayName(FText::FromString(Widget->GetName()), Widget)); UUserWidget* UserWidget = Cast<UUserWidget>(Widget); if (UserWidget != nullptr) { TArray<FName> SlotNames; UserWidget->GetSlotNames(SlotNames); for (FName SlotName : SlotNames) { UWidget* Content = UserWidget->GetContentForSlot(SlotName); if (Content != nullptr) { ToTraverse.Add(Content); } } } UPanelWidget* PanelWidget = Cast<UPanelWidget>(Widget); if (PanelWidget != nullptr) { for (UPanelSlot* Slot : PanelWidget->GetSlots()) { if (Slot->Content != nullptr) { FText SlotDisplayName = FText::Format(LOCTEXT("AddMenuSlotFormat", "{0} ({1} Slot)"), FText::FromString(Slot->Content->GetName()), FText::FromString(PanelWidget->GetName())); BindableObjects.Add(FObjectAndDisplayName(SlotDisplayName, Slot)); ToTraverse.Add(Slot->Content); } } } } }
FText FWidgetTemplateBlueprintClass::GetCategory() const { if ( WidgetClass.Get() ) { UUserWidget* DefaultUserWidget = WidgetClass->GetDefaultObject<UUserWidget>(); return DefaultUserWidget->GetPaletteCategory(); } else { //If the blueprint is unloaded we need to extract it from the asset metadata. FText FoundPaletteCategoryText = WidgetAssetData.GetTagValueRef<FText>(GET_MEMBER_NAME_CHECKED(UWidgetBlueprint, PaletteCategory)); if (!FoundPaletteCategoryText.IsEmpty()) { return FoundPaletteCategoryText; } else { auto DefaultUserWidget = UUserWidget::StaticClass()->GetDefaultObject<UUserWidget>(); return DefaultUserWidget->GetPaletteCategory(); } } }
UUserWidget* UWidgetBlueprintLibrary::Create(UObject* WorldContextObject, TSubclassOf<UUserWidget> WidgetType, APlayerController* OwningPlayer) { if ( WidgetType == nullptr || WidgetType->HasAnyClassFlags(CLASS_Abstract) ) { return nullptr; } UUserWidget* UserWidget = nullptr; if ( OwningPlayer == nullptr ) { UWorld* World = GEngine->GetWorldFromContextObject(WorldContextObject); UserWidget = CreateWidget<UUserWidget>(World, WidgetType); } else { UserWidget = CreateWidget<UUserWidget>(OwningPlayer, WidgetType); } if (UserWidget) { UserWidget->SetFlags(RF_StrongRefOnFrame); } return UserWidget; }
EBTNodeResult::Type UBTTask_CloseDialogue::ExecuteTask(UBehaviorTreeComponent& OwnerComp, uint8* NodeMemory) { EBTNodeResult::Type NodeResult = EBTNodeResult::Failed; if (!DialogueWidget.IsNone()) { FName KeyName = DialogueWidget.SelectedKeyName; UBlackboardComponent* BlackboardComp = OwnerComp.GetBlackboardComponent(); UUserWidget* Widget = Cast<UUserWidget>(BlackboardComp->GetValueAsObject(KeyName)); UWidgetComponent* WidgetComp = Cast<UWidgetComponent>(BlackboardComp->GetValueAsObject(KeyName)); if (!Widget && !WidgetComp) { #if WITH_EDITOR FMessageLog("PIE").Error() ->AddToken(FTextToken::Create(LOCTEXT("InvalidWidgetKey", "Invalid key for Dialogue Widget in "))) ->AddToken(FUObjectToken::Create((UObject*)OwnerComp.GetCurrentTree())); #endif return EBTNodeResult::Failed; } if (!Widget && WidgetComp) { Widget = CreateWidget<UUserWidget>(GetWorld(), WidgetComp->GetWidgetClass()); } APlayerController* PlayerController = Widget->GetOwningPlayer(); FInputModeGameOnly InputMode; PlayerController->SetInputMode(InputMode); if (Widget && Widget->IsInViewport()) { Widget->RemoveFromParent(); } switch (MouseOptions) { case ECloseDialogueCursorOptions::Show: PlayerController->bShowMouseCursor = true; break; default: PlayerController->bShowMouseCursor = false; break; } } // set camera default values if (!PlayerCamera.IsNone()) { FName PlayerCameraKeyName = PlayerCamera.SelectedKeyName; UBlackboardComponent* BlackboardComp = OwnerComp.GetBlackboardComponent(); UCameraComponent* PlayerCameraComp = Cast<UCameraComponent>(BlackboardComp->GetValueAsObject(PlayerCameraKeyName)); if (PlayerCameraComp) { PlayerCameraComp->SetWorldLocationAndRotation(DefaultCameraLocation, DefaultCameraRotation); UBTTask_ShowPhrases* ShowPhrases = Cast<UBTTask_ShowPhrases>(FirstTaskNode); UBTTask_WaitAnswer* WaitAnswer = Cast<UBTTask_WaitAnswer>(FirstTaskNode); if (ShowPhrases) { ShowPhrases->DefaultCameraLocation = FVector(0.f, 0.f, 0.f); } if (WaitAnswer) { WaitAnswer->DefaultCameraLocation = FVector(0.f, 0.f, 0.f); } } } return NodeResult; }