32 FOnLiveConfigPropertiesUpdated OnPropertiesUpdated;
34 FSimpleMulticastDelegate OnTagsChanged;
44 virtual void Initialize(FSubsystemCollectionBase& Collection)
override;
45 virtual void Deinitialize()
override;
46 virtual bool ShouldCreateSubsystem(UObject* Outer)
const override;
91 UScriptStruct* Struct = TBaseStructure<T>::Get();
94 Struct = T::StaticStruct();
96 GetLiveConfigStruct_Internal(Struct, &OutStruct, StructProperty);
107 RedirectPropertyName(Property);
108 return Cache.GetValue<T>(Property);
111 void GetLiveConfigStruct_Internal(
class UScriptStruct* Struct,
void* OutStructPtr,
FLiveConfigProperty Prefix)
const;
114 UFUNCTION(BlueprintCallable, Category =
"Live Config")
115 bool IsDataReady()
const {
return bIsDataReady; }
117 void DownloadConfig();
120 void RebuildConfigCache();
124 UFUNCTION(BlueprintCallable, Category =
"Live Config")
137 void RemoveRedirect(FName OldPropertyName);
139 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "General")
142 UPROPERTY(Config, VisibleAnywhere, BlueprintReadOnly, Category = "General")
143 TArray<FName> PropertyTags;
145 void HandleTagsChanged();
149 TMap<FName, FName> PropertyRedirects;
153 FString RemoteOverrideCSVUrl;
154 double TimeLoadStarted = -9999;
155 float RateLimitSeconds = 5;
156 FTimerHandle PollingTimer;
157 FTSTicker::FDelegateHandle TimeoutTimer;
158 TSharedPtr<IHttpRequest> CurrentRequest;
166 float TimeoutDuration;
168 void OnSheetDownloadComplete(FHttpRequestPtr Request, FHttpResponsePtr Response,
bool bWasSuccessful);
170 void OnTravel(UWorld* World, FWorldInitializationValues WorldInitializationValues);
171 void OnStartGameInstance(UGameInstance* GameInstance);
179 void PopulateAutoCompleteEntries(TArray<FAutoCompleteCommand>& AutoCompleteCommands);
182 bool bIsDataReady = false;