// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Containers/Array.h" #include "Containers/Map.h" #include "Engine/DataAsset.h" #include "Templates/SubclassOf.h" #include "UObject/SoftObjectPtr.h" #include "UObject/UObjectGlobals.h" #include "GameSettingVisualData.generated.h" 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(BlueprintType) class GAMESETTINGS_API UGameSettingVisualData : public UDataAsset { GENERATED_BODY() public: TSubclassOf GetEntryForSetting(UGameSetting* InSetting); virtual TArray> GatherDetailExtensions(UGameSetting* InSetting); protected: 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; };