// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Engine/DataAsset.h" #include "GameSettingVisualData.generated.h" #define UE_API GAMESETTINGS_API class FName; class UGameSetting; class UGameSettingDetailExtension; class UGameSettingListEntryBase; class UObject; USTRUCT(BlueprintType) struct FGameSettingClassExtensions { GENERATED_BODY() public: UPROPERTY(EditAnywhere, Category = Extensions) TArray> Extensions; }; USTRUCT(BlueprintType) struct FGameSettingNameExtensions { GENERATED_BODY() public: UPROPERTY(EditAnywhere, Category = Extensions) bool bIncludeClassDefaultExtensions = false; UPROPERTY(EditAnywhere, Category = Extensions) TArray> Extensions; }; /** * */ UCLASS(MinimalAPI, BlueprintType) class UGameSettingVisualData : public UDataAsset { GENERATED_BODY() public: UE_API TSubclassOf GetEntryForSetting(UGameSetting* InSetting); UE_API virtual TArray> GatherDetailExtensions(UGameSetting* InSetting); protected: UE_API virtual TSubclassOf GetCustomEntryForSetting(UGameSetting* InSetting); protected: UPROPERTY(EditDefaultsOnly, Category = ListEntries, meta = (AllowAbstract)) TMap, TSubclassOf> EntryWidgetForClass; UPROPERTY(EditDefaultsOnly, Category = ListEntries, meta = (AllowAbstract)) TMap> EntryWidgetForName; UPROPERTY(EditDefaultsOnly, Category = Extensions, meta = (AllowAbstract)) TMap, FGameSettingClassExtensions> ExtensionsForClasses; UPROPERTY(EditDefaultsOnly, Category = Extensions) TMap ExtensionsForName; }; #undef UE_API