Пример #1
0
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();
	}
}
Пример #4
0
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;
}
Пример #5
0
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;
}
Пример #7
0
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;
}