Live Config
Loading...
Searching...
No Matches
LiveConfigProfileSystem.h
1// Copyright (c) 2026 Nicholas Arthur
2// Licensed under the MIT License
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "Subsystems/EngineSubsystem.h"
8#include "LiveConfigProfile.h"
9#include "LiveConfigProfileSystem.generated.h"
10
11DECLARE_LOG_CATEGORY_EXTERN(LogLiveConfigProfile, Log, All);
12
13DECLARE_MULTICAST_DELEGATE_OneParam(FOnLiveConfigProfileChanged, const FLiveConfigProfile&);
14
15UCLASS(BlueprintType)
16class LIVECONFIG_API ULiveConfigProfileSystem : public UEngineSubsystem
17{
18 GENERATED_BODY()
19
20public:
21 static ULiveConfigProfileSystem* Get();
22
23 FOnLiveConfigProfileChanged OnProfileChanged;
24
25 // USubsystem
26 virtual void Initialize(FSubsystemCollectionBase& Collection) override;
27 virtual void Deinitialize() override;
28 // ~USubsystem
29
30 UFUNCTION(BlueprintCallable, Category = "Live Config|Profiles")
31 void SaveProfile(const FLiveConfigProfile& Profile);
32
33 UFUNCTION(BlueprintCallable, Category = "Live Config|Profiles")
34 bool LoadProfile(FName ProfileName, FLiveConfigProfile& OutProfile);
35
36 UFUNCTION(BlueprintCallable, Category = "Live Config|Profiles")
37 void DeleteProfile(FName ProfileName);
38
39 UFUNCTION(BlueprintCallable, Category = "Live Config|Profiles")
40 TArray<FName> GetAllProfileNames() const;
41
42 UFUNCTION(BlueprintCallable, Category = "Live Config|Profiles")
43 void SetActiveProfile(FName ProfileName);
44
49 void SetActiveProfileData(const FLiveConfigProfile& Profile);
50
51 void SetActiveProfileData_NoReplication(const FLiveConfigProfile& Profile);
52
53 UFUNCTION(BlueprintCallable, Category = "Live Config|Profiles")
54 const FLiveConfigProfile& GetActiveProfile() const { return ActiveProfile; }
55
56 static FString GetProfilesDirectory();
57 static FString GetProfilePath(FName ProfileName);
58
59private:
60 FLiveConfigProfile ActiveProfile;
61};
Definition LiveConfigProfileSystem.h:17
Definition LiveConfigProfile.h:24