Skip to content

File SFSettingsDeveloperSettings.h

File List > Public > SFSettingsDeveloperSettings.h

Go to the documentation of this file

// Copyright 2026 Anh Pham. All Rights Reserved.

#pragma once

#include "CoreMinimal.h"
#include "Engine/DeveloperSettings.h"
#include "Core/SFCoreTypes.h"
#include "Templates/SubclassOf.h"
#include "SFSettingsDeveloperSettings.generated.h"

UCLASS(Config = Game, meta = (DisplayName = "Settings Framework", ToolTip = "Developer settings to define project-wide configurations for the Settings Framework plugin."))
class SETTINGSFRAMEWORK_API USFSettingsDeveloperSettings : public UDeveloperSettings
{
    GENERATED_BODY()

public:
    UPROPERTY(Config, EditAnywhere, Category = "Settings Registry")
    TSoftObjectPtr<class USFSettingsRegistry> SettingsRegistry;

    UPROPERTY(Config, EditAnywhere, Category = "Settings Serialization")
    FString SaveGameSlotName = TEXT("SF_SaveSlot");

    UPROPERTY(Config, EditAnywhere, Category = "Settings Conditions")
    int32 MaxUpdateDepth = 10;

    UPROPERTY(Config, EditAnywhere, Category = "Settings Logic")
    ESFKeybindCollisionResolution DefaultKeybindCollisionResolution = ESFKeybindCollisionResolution::Overwrite;

    UPROPERTY(Config, EditAnywhere, Category = "Settings UI")
    TSubclassOf<class USFCategoryTabButtonBase> RootTabButtonClass;

    UPROPERTY(Config, EditAnywhere, Category = "Settings UI")
    TSubclassOf<class USFCategoryTabButtonBase> BranchTabButtonClass;

    UPROPERTY(Config, EditAnywhere, Category = "Settings UI")
    TSubclassOf<class USFCategoryTab_Branch> BranchTabContentClass;

    UPROPERTY(Config, EditAnywhere, Category = "Settings UI")
    TSubclassOf<class USFCategoryTab_Leaf> LeafTabContentClass;

    UPROPERTY(Config, EditAnywhere, Category = "Settings UI")
    TSubclassOf<class USFSettingGroupWidget> SettingGroupWidgetClass;

    UPROPERTY(Config, EditAnywhere, Category = "Settings UI")
    TMap<TSubclassOf<class USFSettingDefinition>, TSubclassOf<class USFSettingEntryWidget>> SettingEntryWidgetClasses;

public:
    virtual FName GetCategoryName() const override
    {
        return FName("Plugins");
    }
};