// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Map.h" #include "Engine/DataAsset.h" #include "HAL/Platform.h" #include "Internationalization/Text.h" #include "UObject/PrimaryAssetId.h" #include "UObject/SoftObjectPtr.h" #include "UObject/UObjectGlobals.h" #include "LyraUserFacingExperienceDefinition.generated.h" class FString; class UCommonSession_HostSessionRequest; class UObject; class UTexture2D; class UUserWidget; struct FFrame; /** 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) TObjectPtr 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; };