// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/Interface.h" #include "Engine/GameInstance.h" #include "UObject/PrimaryAssetId.h" #include "Engine/DataAsset.h" #include "LyraUserFacingExperienceDefinition.generated.h" class UWorld; class UCommonSession_HostSessionRequest; class UTexture2D; class UUserWidget; /** Description of settings used to display experiences in the UI and start a new session */ UCLASS(BlueprintType) class ULyraUserFacingExperienceDefinition : public UPrimaryDataAsset { GENERATED_BODY() public: /** The specific map to load */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience, meta=(AllowedTypes="Map")) FPrimaryAssetId MapID; /** The gameplay experience to load */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience, meta=(AllowedTypes="LyraExperienceDefinition")) FPrimaryAssetId ExperienceID; /** Extra arguments passed as URL options to the game */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) TMap ExtraArgs; /** Primary title in the UI */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) FText TileTitle; /** Secondary title */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) FText TileSubTitle; /** Full description */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) FText TileDescription; /** Icon used in the UI */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) UTexture2D* TileIcon; /** The loading screen widget to show when loading into (or back out of) a given experience */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=LoadingScreen) TSoftClassPtr LoadingScreenWidget; /** If true, this is a default experience that should be used for quick play and given priority in the UI */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) bool bIsDefaultExperience = false; /** If true, this will show up in the experiences list in the front-end */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) bool bShowInFrontEnd = true; /** If true, a replay will be recorded of the game */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) bool bRecordReplay = false; /** Max number of players for this session */ UPROPERTY(BlueprintReadWrite, EditAnywhere, Category=Experience) int32 MaxPlayerCount = 16; public: /** Create a request object that is used to actually start a session with these settings */ UFUNCTION(BlueprintCallable, BlueprintPure=false) UCommonSession_HostSessionRequest* CreateHostingRequest() const; };