Live Config
Loading...
Searching...
No Matches
LiveConfigProfile.h
1// Copyright (c) 2026 Nicholas Arthur
2// Licensed under the MIT License
3
4#pragma once
5
6#include "CoreMinimal.h"
7#include "LiveConfigPropertyName.h"
8#include "LiveConfigProfile.generated.h"
9
10USTRUCT(BlueprintType)
12{
13 GENERATED_BODY()
14
15 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Live Config")
16 FLiveConfigProperty Property;
17
18 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Live Config")
19 FString Value;
20};
21
22USTRUCT(BlueprintType)
24{
25 GENERATED_BODY()
26
27 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Live Config")
28 FName ProfileName;
29
30 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Live Config", NotReplicated, SkipSerialization)
31 TMap<FLiveConfigProperty, FString> Overrides;
32
33 bool IsValid() const { return ProfileName != NAME_None; }
34
39 void Redirect();
40
41 // May be able to handle this behavior via a net serializer rather than forcing us to do a pre/post call
42 void PrepareForReplication()
43 {
44 ReplicatedOverrides.Empty();
45 for (const auto& Pair : Overrides)
46 {
47 ReplicatedOverrides.Add({Pair.Key, Pair.Value});
48 }
49 }
50
51 void OnAfterReplication()
52 {
53 Overrides.Empty();
54 for (const auto& Override : ReplicatedOverrides)
55 {
56 Overrides.Add(Override.Property, Override.Value);
57 }
58 }
59
60 bool operator==(const FLiveConfigProfile& OtherProfile) const;
61
62private:
64 UPROPERTY(meta = (SkipSerialization))
65 TArray<FLiveConfigOverride> ReplicatedOverrides;
66
67};
68
69inline bool FLiveConfigProfile::operator==(const FLiveConfigProfile& OtherProfile) const
70{
71 if (OtherProfile.Overrides.Num() != Overrides.Num())
72 {
73 return false;
74 }
75
76 for (auto OverridePair : Overrides)
77 {
78 if (!OtherProfile.Overrides.Contains(OverridePair.Key))
79 {
80 return false;
81 }
82
83 if (OtherProfile.Overrides[OverridePair.Key] != OverridePair.Value)
84 {
85 return false;
86 }
87 }
88
89 return true;
90}
Definition LiveConfigProfile.h:12
Definition LiveConfigProfile.h:24
Definition LiveConfigPropertyName.h:14