File SFSettingCategory.h
File List > Definitions > SFSettingCategory.h
Go to the documentation of this file
// Copyright 2026 Anh Pham. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Engine/DataAsset.h"
#include "GameplayTagContainer.h"
#include "SFSettingCategory.generated.h"
UENUM(BlueprintType)
enum class ESFCategoryType : uint8
{
Branch UMETA(ToolTip = "Contains other Sub-Categories"),
Leaf UMETA(ToolTip = "Contains individual Settings")
};
USTRUCT(BlueprintType)
struct FSFSettingGroup
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SFSettingGroup")
FText GroupDisplayName;
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "SFSettingGroup")
TArray<TObjectPtr<class USFSettingDefinition>> Settings;
};
UCLASS(BlueprintType)
class SETTINGSFRAMEWORK_API USFSettingCategory : public UDataAsset
{
GENERATED_BODY()
public:
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "SFSettingCategory")
FGameplayTag CategoryTag;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "SFSettingCategory")
ESFCategoryType CategoryType = ESFCategoryType::Leaf;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "SFSettingCategory|Display")
FText DisplayName;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "SFSettingCategory|Branch", meta = (EditCondition = "CategoryType == ESFCategoryType::Branch"))
TArray<TObjectPtr<USFSettingCategory>> Subcategories;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "SFSettingCategory|Leaf", meta = (EditCondition = "CategoryType == ESFCategoryType::Leaf"))
TArray<FSFSettingGroup> SettingGroups;
UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "SFSettingCategory|Leaf", meta = (EditCondition = "CategoryType == ESFCategoryType::Leaf"))
TArray<TObjectPtr<class USFSettingDefinition>> Settings;
};