// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "UObject/ObjectMacros.h" #include "Engine/DataAsset.h" #include "GameplayTagContainer.h" #include "GameSettingVisualData.generated.h" class UGameSetting; class UGameSettingListEntryBase; class UGameSettingDetailExtension; 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; };