UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IConsoleManager.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreTypes.h"
10#include "Logging/LogMacros.h"
12#include "Delegates/Delegate.h"
14#include "Templates/EnableIf.h"
16
17#define TRACK_CONSOLE_FIND_COUNT !(UE_BUILD_SHIPPING || UE_BUILD_TEST)
18
19#if DO_CHECK && (!UE_BUILD_SHIPPING) && !defined(__clang_analyzer__) // Disable even if checks in shipping are enabled.
20 #define cvarCheckCode( Code ) checkCode( Code )
21#else
22 #define cvarCheckCode(...)
23#endif
24
25#define SETBY_ERROR ((EConsoleVariableFlags)0x01000000)
26
27template <class T> class TConsoleVariableData;
28
54{
55 /* Mask for flags. Use this instead of ~ECVF_SetByMask */
56 ECVF_FlagMask = 0x0000ffff,
57
89
90 /* ApplyCVarSettingsGroupFromIni will complain if this wasn't set, should not be combined with ECVF_Cheat and ECVF_ExcludeFromPreview.
91 * They are automatically added as ECVF_Preview unless ECVF_ExcludeFromPreview is used
92 */
94
95 /* those cvars control other cvars with the flag ECVF_Scalability, names should start with "sg." */
97
98 /* CVars with this flag will be included in the device profile previews. */
99 ECVF_Preview = 0x100,
100
101 /* Cvars with this flag will modify the Shader Keystring for All Platforms*/
103
104 /* Cvars with this flag will modify the Shader Keystring for Mobile Platforms*/
106
107 /* Cvars with this flag will modify the Shader Keystring for Desktop Platforms*/
109
110 /* CVars with this flag will be excluded from the device profile previews. */
112
122
123 // ------------------------------------------------
124
125 /* Set flags */
126 ECVF_SetFlagMask = 0x00ff0000,
127
128 // Use to set a cvar without calling all cvar sinks. Much faster, but potentially unsafe. Use only if you know the particular cvar/setting does not require a sink call
130
131 // Similar to ECVF_Set_NoSinkCall_Unsafe, but this will do nothing but set the cvar and flags, and push updates to render thread, no sinks, etc
133
134 // When this is set, this will stomp on existing tagged array type values in place, instead of adding to the end of the array
136
137 // ------------------------------------------------
138
139 /* to get some history of where the last value was set by ( useful for track down why a cvar is in a specific state */
140 ECVF_SetByMask = 0xff000000,
141
142 // The ECVF_SetBy flags are sorted in override order (weak to strong), the value is not serialized. It only affects the override behavior when calling Set()
143
144 // Lowest priority (default after console variable creation)
146 // Reserved value for SETBY_ERROR. Please don't use.
147 // SETBY_ERROR = 0x01000000
148 // Set by scalability groups from Scalability.ini (lower priority than game settings so it's easier to override partially). THIS IS AN ARRAY TYPE
150 // Default priority for engine-level game user settings, platform-specific settings will override this
152 // Set by project settings UI or specific sections in ini file (higher priority than game setting to allow enforcing some settings for this project)
154 // Used by the [ConsoleVariables] section of Engine.ini as well as FSystemSettings
156 // Dyanmically loaded/unloaded plugins, used with the History concept to restore cvars on plugin unload. THIS IS AN ARRAY TYPE meaning multiple vales with this SetBy are stored in the history.
158 // Per device settings using the DeviceProfiles.ini hierarchy (e.g. specific iOS device, higher priority than per project to do device specific settings). THIS IS AN ARRAY TYPE
160 // Dyanmically loaded/unloaded plugins, used with the History concept to restore cvars on plugin unload. THIS IS AN ARRAY TYPE meaning multiple vales with this SetBy are stored in the history.
162 // User settable game overrides, used for GameUserSettings fields that need to override device specific settings
164 // Set by local consolevariables.ini, mostly used for testing multiple projects
166 // Set by hotfix. THIS IS AN ARRAY TYPE meaning multiple vales with this SetBy are stored in the history
167 ECVF_SetByHotfix = 0x0B000000,
168 // Set for previewing in editor. THIS IS AN ARRAY TYPE meaning multiple vales with this SetBy are stored in the history
169 ECVF_SetByPreview = 0x0C000000,
170 // Used by some command line parameters, others use the Console priority instead
172 // Used for high priority temporary debugging or operation modes
173 ECVF_SetByCode = 0x0E000000,
174 // Highest priority used via editor UI or or game/editor interactive console
175 ECVF_SetByConsole = 0x0F000000,
176
177
178 // ------------------------------------------------
179};
180
181
182#define ENUMERATE_SET_BY(op) \
183 op(Constructor) \
184 op(Scalability) \
185 op(GameSetting) \
186 op(ProjectSetting) \
187 op(SystemSettingsIni) \
188 op(PluginLowPriority) \
189 op(DeviceProfile) \
190 op(PluginHighPriority) \
191 op(GameOverride) \
192 op(ConsoleVariablesIni) \
193 op(Hotfix) \
194 op(Preview) \
195 op(Commandline) \
196 op(Code) \
197 op(Console)
198
199
202
205
207{
208 // Store a mapping from EShaderPlatform (as int) to a Platform that is currently cooking for that ShaderPlatform
209 CORE_API void RegisterShaderPlatformToPlatformMapping(int ShaderPlatform, FName PlatformName);
210 // Store a mapping from Platform to a DevicveProfile that is currently being used when cooking for that Platform
211 CORE_API void RegisterPlatformToDeviceProfileMapping(FName PlatformName, FName DeviceProfileName);
212
213 // Receives the mapping previously set with RegisterShaderPlatformToPlatformMapping
214 // Returns NAME_None if no mapping exists
215 CORE_API FName GetShaderPlatformToPlatformMapping(int ShaderPlatform);
216 // Receives the mapping previously set with RegisterPlatformToDeviceProfileMapping
217 // Returns NAME_None if no mapping exists
218 CORE_API FName GetPlatformToDeviceProfileMapping(FName PlatformName);
219}
220
221class IConsoleVariable;
222
223#if !NO_CVARS
224
227
230
233
236
239
242
245
248
251
254
255#else
256
257template <typename DerivedType, typename... ParamTypes>
259{
263 template <typename... VarTypes>
264 inline static DerivedType CreateStatic(typename TIdentity<void (*)(ParamTypes..., VarTypes...)>::Type, VarTypes...)
265 {
266 return {};
267 }
268
269 template<typename FunctorType, typename... VarTypes>
270 inline static DerivedType CreateLambda(FunctorType&&, VarTypes...)
271 {
272 return {};
273 }
274
275 template<typename UserClass, typename FunctorType, typename... VarTypes>
276 inline static DerivedType CreateSPLambda(UserClass*, FunctorType&&, VarTypes...)
277 {
278 return {};
279 }
280
281 template<typename UserClass, typename FunctorType, typename... VarTypes>
282 inline static DerivedType CreateWeakLambda(UserClass*, FunctorType&&, VarTypes...)
283 {
284 return {};
285 }
286
287 template <typename UserClass, typename... VarTypes>
288 inline static DerivedType CreateRaw(UserClass*, typename TMemFunPtrType<false, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
289 {
290 return {};
291 }
292 template <typename UserClass, typename... VarTypes>
293 inline static DerivedType CreateRaw(UserClass*, typename TMemFunPtrType<true, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
294 {
295 return {};
296 }
297
298 template <typename UserClass, typename... VarTypes>
299 inline static DerivedType CreateSP(const TSharedRef<UserClass>&, typename TMemFunPtrType<false, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
300 {
301 return {};
302 }
303 template <typename UserClass, typename... VarTypes>
304 inline static DerivedType CreateSP(const TSharedRef<UserClass>&, typename TMemFunPtrType<true, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
305 {
306 return {};
307 }
308
309 template <typename UserClass, typename... VarTypes>
310 inline static DerivedType CreateSP(UserClass*, typename TMemFunPtrType<false, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
311 {
312 return {};
313 }
314 template <typename UserClass, typename... VarTypes>
315 inline static DerivedType CreateSP(UserClass*, typename TMemFunPtrType<true, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
316 {
317 return {};
318 }
319
320 template <typename UserClass, typename... VarTypes>
321 inline static DerivedType CreateThreadSafeSP(const TSharedRef<UserClass, ESPMode::ThreadSafe>&, typename TMemFunPtrType<false, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
322 {
323 return {};
324 }
325 template <typename UserClass, typename... VarTypes>
326 inline static DerivedType CreateThreadSafeSP(const TSharedRef<UserClass, ESPMode::ThreadSafe>&, typename TMemFunPtrType<true, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
327 {
328 return {};
329 }
330
331 template <typename UserClass, typename... VarTypes>
332 inline static DerivedType CreateThreadSafeSP(UserClass*, typename TMemFunPtrType<false, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
333 {
334 return {};
335 }
336 template <typename UserClass, typename... VarTypes>
337 inline static DerivedType CreateThreadSafeSP(UserClass*, typename TMemFunPtrType<true, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
338 {
339 return {};
340 }
341
342 template <typename UObjectTemplate, typename... VarTypes>
343 inline static DerivedType CreateUFunction(UObjectTemplate*, const FName&, VarTypes...)
344 {
345 return {};
346 }
347
348 template <typename UserClass, typename... VarTypes>
349 inline static DerivedType CreateUObject(UserClass*, typename TMemFunPtrType<false, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
350 {
351 return {};
352 }
353 template <typename UserClass, typename... VarTypes>
354 inline static DerivedType CreateUObject(UserClass*, typename TMemFunPtrType<true, UserClass, void (ParamTypes..., VarTypes...)>::Type, VarTypes...)
355 {
356 return {};
357 }
358
360 {
361 return {};
362 }
363
364 bool ExecuteIfBound(ParamTypes...)
365 {
366 return false;
367 }
368};
369
370struct FConsoleVariableDelegate : FNullConsoleVariableDelegate<FConsoleVariableDelegate, IConsoleVariable*> {};
371struct FConsoleCommandDelegate : FNullConsoleVariableDelegate<FConsoleCommandDelegate> {};
372struct FConsoleCommandWithArgsDelegate : FNullConsoleVariableDelegate<FConsoleCommandWithArgsDelegate, const TArray<FString>&> {};
373struct FConsoleCommandWithWorldDelegate : FNullConsoleVariableDelegate<FConsoleCommandWithWorldDelegate, UWorld*> {};
374struct FConsoleCommandWithWorldAndArgsDelegate : FNullConsoleVariableDelegate<FConsoleCommandWithWorldAndArgsDelegate, const TArray<FString>&, UWorld*> {};
375struct FConsoleCommandWithArgsAndOutputDeviceDelegate : FNullConsoleVariableDelegate<FConsoleCommandWithArgsAndOutputDeviceDelegate, const TArray<FString>&, FOutputDevice&> {};
376struct FConsoleCommandWithWorldArgsAndOutputDeviceDelegate : FNullConsoleVariableDelegate<FConsoleCommandWithWorldArgsAndOutputDeviceDelegate, const TArray<FString>&, UWorld*, FOutputDevice&> {};
377struct FConsoleCommandWithOutputDeviceDelegate : FNullConsoleVariableDelegate<FConsoleCommandWithOutputDeviceDelegate, FOutputDevice&> {};
378
379#endif
380
381template <class T> class TConsoleVariableData;
382
387{
388
389public:
390
392#if TRACK_CONSOLE_FIND_COUNT
393 : FindCallCount(0)
394#endif
395 {}
396
397 virtual ~IConsoleObject() {}
398
402 virtual const TCHAR* GetHelp() const = 0;
406 virtual void SetHelp(const TCHAR* Value) = 0;
410 virtual EConsoleVariableFlags GetFlags() const = 0;
414 virtual void SetFlags(const EConsoleVariableFlags Value) = 0;
418 virtual FText GetDetailedHelp() const
419 {
420 // By default, just return the standard help message :
421 return FText::FromString(GetHelp());
422 }
423
424 // Convenience methods -------------------------------------
425
439 {
440 return ((uint32)GetFlags() & (uint32)Value) != 0;
441 }
442
446 bool IsEnabled() const
447 {
448#if DISABLE_CHEAT_CVARS
450 {
451 return false;
452 }
453#endif // DISABLE_CHEAT_CVARS
455 {
456 return false;
457 }
458 return true;
459 }
460
461
466 {
467 return nullptr;
468 }
469
474 {
475 return 0;
476 }
477
478 virtual bool IsVariableBool() const { return false; }
479 virtual bool IsVariableInt() const { return false; }
480 virtual bool IsVariableFloat() const { return false; }
481 virtual bool IsVariableString() const { return false; }
482
484 {
485 ensureMsgf(false, TEXT("Attempted to access variable data of a console variable type that doesn't support it. For example FindTConsoleVariableData* on a FAutoConsoleVariableRef."));
486 return 0;
487 }
488
490 {
491 ensureMsgf(false, TEXT("Attempted to access variable data of a console variable type that doesn't support it. For example FindTConsoleVariableData* on a FAutoConsoleVariableRef."));
492 return 0;
493 }
494
496 {
497 ensureMsgf(false, TEXT("Attempted to access variable data of a console variable type that doesn't support it. For example FindTConsoleVariableData* on a FAutoConsoleVariableRef."));
498 return 0;
499 }
500
501 virtual class TConsoleVariableData<FString>* AsVariableString()
502 {
503 ensureMsgf(false, TEXT("Attempted to access variable data of a console variable type that doesn't support it. For example FindTConsoleVariableData* on a FAutoConsoleVariableRef."));
504 return 0;
505 }
506
510 virtual struct IConsoleCommand* AsCommand()
511 {
512 return 0;
513 }
514
519 virtual bool IsShadowObject() const
520 {
521 return false;
522 }
523
529 {
530 return nullptr;
531 }
532
533 virtual bool IsDeprecated() const
534 {
535 return false;
536 }
537
538private: // -----------------------------------------
539
540#if TRACK_CONSOLE_FIND_COUNT
541 // no longer pure visual, if that causes problems we can change the interface
542 // to track down FindConsoleObject/FindConsoleVariable calls without static
543 uint32 FindCallCount;
544#endif
545
549 virtual void Release() = 0;
550
551 friend class FConsoleManager;
552};
553
558{
559public:
560
566
568 {
570 {
571 }
572
578
579
580 enum class EPriorityMode : uint8
581 {
582 Set,
583 // the following are limited by Max priority if its set
585 };
586
587 enum class ETagMode : uint8
588 {
589 // Sets the Tag at the end of the array. Remove the Tag if it already exists.
590 Set,
591 // Replace the Tag in-place if it already exists. Sets the Tag at the end if it doesn't exist.
592 Replace,
593 // Replaces the current highest Tag.
595 };
596
597
600
603
606 };
607
609
615 virtual void Set(const TCHAR* InValue, const FResolvedContext& Context) = 0;
616
623 virtual void Unset(EConsoleVariableFlags SetBy, FName Tag = NAME_None) = 0;
624
628 virtual bool GetBool() const = 0;
633 virtual int32 GetInt() const = 0;
635 virtual float GetFloat() const = 0;
637 virtual FString GetString() const = 0;
638
641 {
643 }
644 void GetValue(bool& OutBoolValue) const
645 {
647 }
648 void GetValue(float& OutFloatValue) const
649 {
651 }
652 void GetValue(FString& OutStringValue) const
653 {
655 }
656
667 virtual void SetOnChangedCallback(const FConsoleVariableDelegate& Callback) = 0;
668
670
674 UE_DEPRECATED(5.4, "Use GetDefaultValue() instead")
676 {
677 return nullptr;
678 }
679
683 virtual FString GetDefaultValue() = 0;
684
685#if ALLOW_OTHER_PLATFORM_CONFIG
686
691 virtual TSharedPtr<IConsoleVariable> GetPlatformValueVariable(FName PlatformName, const FString& DeviceProfileName=FString()) = 0;
692
696 virtual bool HasPlatformValueVariable(FName PlatformName, const FString& DeviceProfileName=FString()) = 0;
697
702 virtual void ClearPlatformVariables(FName PlatformName=NAME_None)
703 {
704 }
705
706#endif
707
711 virtual void LogHistory(FOutputDevice& Ar) = 0;
712
716 virtual SIZE_T GetHistorySize() = 0;
717
718 // convenience methods
719
721 void Set(const TCHAR* InValue, const FSetContext& Context)
722 {
723 Set(InValue, this->ResolveContext(Context));
724 }
725
727 void Set(bool InValue, const FSetContext& Context)
728 {
729 // NOTE: Bool needs to use 1 and 0 here rather than true/false, as this may be a int32 or something
730 // and eventually this code calls, TTypeFromString<T>::FromString which won't handle the true/false,
731 // but 1 and 0 will work for whatever.
732 // inefficient but no common code path
733 Set(InValue ? TEXT("1") : TEXT("0"), Context);
734 }
737 {
738 // inefficient but no common code path
739 Set(*FString::Printf(TEXT("%d"), InValue), Context);
740 }
742 void Set(float InValue, const FSetContext& Context)
743 {
744 // inefficient but no common code path
745 Set(*FString::Printf(TEXT("%g"), InValue), Context);
746 }
747
748
749 template <typename T>
754
755 template <typename T>
757 T Value,
761 {
762 checkf(MinPriority <= MaxPriority, TEXT("MinPriority must be <= MaxPriority"))
764 Context.Tag = Tag;
766 Context.MinPriority = MinPriority;
767 Context.MaxPriority = MaxPriority;
769 Context.Flags = CurFlags;
770 Set(Value, Context);
771 }
772
773 template<typename T>
775 T InValue,
778 {
779 checkf(MinPriority <= MaxPriority, TEXT("MinPriority must be <= MaxPriority"))
783 Context.MinPriority = MinPriority;
784 Context.MaxPriority = MaxPriority;
786 Context.Flags = CurFlags;
788 }
789
790
791};
792
797{
805 virtual bool Execute( const TArray< FString >& Args, UWorld* InWorld, class FOutputDevice& OutputDevice ) = 0;
806};
807
812{
813 virtual void OnCVarChange(int32& Dest, int32 NewValue) = 0;
814 virtual void OnCVarChange(float& Dest, float NewValue) = 0;
815 virtual void OnCVarChange(bool& Dest, bool NewValue) = 0;
816 virtual void OnCVarChange(FString& Dest, const FString& NewValue) = 0;
817 virtual void OnCVarChange(FName& Dest, const FName& NewValue) = 0;
818};
819
828
829
834{
835public:
839
841 : Handle(InHandle)
842 {
843 }
844
845 template <typename MulticastDelegateType>
847 {
848 MulticastDelegate.Remove(Handle);
849 }
850
851 template <typename DelegateType>
852 bool HasSameHandle(const DelegateType& Delegate) const
853 {
854 return Delegate.GetHandle() == Handle;
855 }
856
857private:
858 FDelegateHandle Handle;
859};
860
862{
863 FString Name;
864 FString Help;
865
866 FConsoleSuggestion(FString InName, FString InHelp)
867 : Name(InName)
868 , Help(InHelp)
869 {}
870
873};
874
879{
880public:
881 virtual ~IConsoleCommandExecutor() = default;
882
887 {
888 static const FName Name = TEXT("ConsoleCommandExecutor");
889 return Name;
890 }
891
895 virtual FName GetName() const = 0;
896
900 virtual FText GetDisplayName() const = 0;
901
905 virtual FText GetDescription() const = 0;
906
910 virtual FText GetHintText() const = 0;
911
916
920 UE_DEPRECATED(5.5, "Use GetSuggestedCompletions instead")
921 virtual void GetAutoCompleteSuggestions(const TCHAR* Input, TArray<FString>& Out){};
922
926 virtual void GetExecHistory(TArray<FString>& Out) = 0;
927
932 virtual bool Exec(const TCHAR* Input) = 0;
933
938 virtual bool AllowHotKeyClose() const = 0;
939
943 virtual bool AllowMultiLine() const = 0;
944
948 virtual struct FInputChord GetHotKey() const = 0;
953 virtual struct FInputChord GetIterateExecutorHotKey() const = 0;
954};
955
956
961{
968 virtual IConsoleVariable* RegisterConsoleVariable(const TCHAR* Name, bool DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
975 virtual IConsoleVariable* RegisterConsoleVariable(const TCHAR* Name, int32 DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
982 virtual IConsoleVariable* RegisterConsoleVariable(const TCHAR* Name, float DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
989 virtual IConsoleVariable* RegisterConsoleVariable(const TCHAR* Name, const TCHAR* DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
996 virtual IConsoleVariable* RegisterConsoleVariable(const TCHAR* Name, const FString& DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
1003 virtual IConsoleVariable* RegisterConsoleVariableRef(const TCHAR* Name, bool& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
1017 virtual IConsoleVariable* RegisterConsoleVariableRef(const TCHAR* Name, float& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
1024 virtual IConsoleVariable* RegisterConsoleVariableRef(const TCHAR* Name, FString& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
1042 virtual IConsoleVariable* RegisterConsoleVariableBitRef(const TCHAR* CVarName, const TCHAR* FlagName, uint32 BitNumber, uint8* Force0MaskPtr, uint8* Force1MaskPtr, const TCHAR* Help, uint32 Flags = ECVF_Default) = 0;
1043
1044 // ----------
1045
1055
1061
1067
1068 // ----------
1069
1079
1089
1099
1109
1119
1129
1139
1148
1156
1163 virtual void UnregisterConsoleObject(const TCHAR* Name, bool bKeepState = true) = 0;
1164
1170 virtual IConsoleVariable* FindConsoleVariable(const TCHAR* Name, bool bTrackFrequentCalls = true) const = 0;
1171
1177 virtual IConsoleObject* FindConsoleObject(const TCHAR* Name, bool bTrackFrequentCalls = true) const = 0;
1178
1184 virtual FString FindConsoleObjectName(const IConsoleObject* Obj) const = 0;
1185
1192 {
1194
1195 return P ? P->AsVariableBool() : 0;
1196 }
1197
1204 {
1206
1207 return P ? P->AsVariableInt() : 0;
1208 }
1209
1216 {
1218
1219 return P ? P->AsVariableFloat() : 0;
1220 }
1221
1222
1228 virtual void ForEachConsoleObjectThatStartsWith( const FConsoleObjectVisitor& Visitor, const TCHAR* ThatStartsWith = TEXT("")) const = 0;
1229
1235 virtual void ForEachConsoleObjectThatContains(const FConsoleObjectVisitor& Visitor, const TCHAR* ThatContains) const = 0;
1236
1249
1253 virtual void AddConsoleHistoryEntry(const TCHAR* Key, const TCHAR* Input) = 0;
1254
1257 virtual void GetConsoleHistory(const TCHAR* Key, TArray<FString>& Out) = 0;
1258
1263 virtual bool IsNameRegistered(const TCHAR* Name) const = 0;
1264
1265 // currently only for render thread
1266 // @param InCallback 0 to disable the callbacks
1268
1270 inline static IConsoleManager& Get()
1271 {
1272 if (!Singleton)
1273 {
1274 SetupSingleton();
1275 check(Singleton != nullptr);
1276 }
1277 return *Singleton;
1278 }
1279
1280#if ALLOW_OTHER_PLATFORM_CONFIG
1290 static CORE_API bool VisitPlatformCVarsForEmulation(FName PlatformName, const FString& DeviceProfileName, TFunctionRef<void(const FString& CVarName, const FString& CVarValue, EConsoleVariableFlags SetBy)> Visit);
1291
1296 virtual void LoadAllPlatformCVars(FName PlatformName, const FString& DeviceProfileName=FString()) = 0;
1297
1302 virtual void PreviewPlatformCVars(FName PlatformName, const FString& DeviceProfileName, FName PreviewModeTag) = 0;
1303
1308 virtual void StompPlatformCVars(FName PlatformName, const FString& DeviceProfileName, FName Tag, EConsoleVariableFlags SetBy, EConsoleVariableFlags RequiredFlags, EConsoleVariableFlags DisallowedFlags) = 0;
1309
1314 virtual void ClearAllPlatformCVars(FName PlatformName=NAME_None, const FString& DeviceProfileName=FString()) = 0;
1315
1316#endif
1317
1324
1329
1332
1333protected:
1334 virtual ~IConsoleManager() { }
1335
1336private:
1338 static CORE_API IConsoleManager* Singleton;
1339
1341 static CORE_API void SetupSingleton();
1342};
1343
1344
1349template <typename T>
1351{
1354
1355 TGuardConsoleVariable(const TCHAR* ConsoleVariableName, const T& NewValue)
1356 : TGuardConsoleVariable(IConsoleManager::Get().FindConsoleVariable(ConsoleVariableName), NewValue)
1357 {
1358 ensureMsgf(ConsoleVariable, TEXT("TGuardConsoleVariable: Trying to set console variable \"%s\" but it doesn't exist"), ConsoleVariableName);
1359 }
1360
1363 {
1364 if (ConsoleVariable)
1365 {
1367 ConsoleVariable->Set(NewValue);
1368 }
1369 }
1370
1372
1379
1381
1383
1385 {
1386 if (ConsoleVariable)
1387 {
1389 }
1390 }
1391};
1392
1397{
1398public:
1407 {
1408//disabled for now, destruction order makes this not always working IConsoleManager::Get().UnregisterConsoleVariableSink_Handle(Handle);
1409 }
1410
1413};
1414
1415
1420{
1421protected:
1424 : Target(InTarget)
1425 {
1426 check(Target);
1428 {
1430 }
1431 else if (Target->TestFlags(ECVF_MobileShaderChange))
1432 {
1434 }
1435 else if (Target->TestFlags(ECVF_DesktopShaderChange))
1436 {
1438 }
1439 }
1440public:
1442 CORE_API virtual ~FAutoConsoleObject();
1443
1447
1450 {
1451 checkSlow(Target->AsVariable());
1452 return static_cast<IConsoleVariable*>(Target);
1453 }
1455 inline const IConsoleVariable* AsVariable() const
1456 {
1457 checkSlow(Target->AsVariable());
1458 return static_cast<const IConsoleVariable*>(Target);
1459 }
1460
1461private:
1463 IConsoleObject* Target;
1464};
1465
1466#if !NO_CVARS
1471{
1472public:
1479 CORE_API FAutoConsoleVariable(const TCHAR* Name, bool DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1486 CORE_API FAutoConsoleVariable(const TCHAR* Name, int32 DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1493 CORE_API FAutoConsoleVariable(const TCHAR* Name, float DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1500 CORE_API FAutoConsoleVariable(const TCHAR* Name, const TCHAR* DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1501
1509 CORE_API FAutoConsoleVariable(const TCHAR* Name, bool DefaultValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1510
1518 CORE_API FAutoConsoleVariable(const TCHAR* Name, int32 DefaultValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1519
1527 CORE_API FAutoConsoleVariable(const TCHAR* Name, float DefaultValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1528
1536 CORE_API FAutoConsoleVariable(const TCHAR* Name, const TCHAR* DefaultValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1537
1544 {
1545 return *AsVariable();
1546 }
1553 {
1554 return AsVariable();
1555 }
1556};
1557#else
1559{
1560public:
1561 FAutoConsoleVariable(const TCHAR* Name, int32 DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1562 {
1563 }
1564
1565 FAutoConsoleVariable(const TCHAR* Name, float DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1566 {
1567 }
1568
1569 FAutoConsoleVariable(const TCHAR* Name, const TCHAR* DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1570 {
1571 }
1572};
1573#endif
1574
1575#if !NO_CVARS
1580{
1581public:
1588 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, int32& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1595 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, float& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1602 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, bool& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1609 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, FString& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1610
1617 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, FName& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default);
1618
1626 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, int32& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1627
1635 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, float& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1636
1644 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, bool& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1645
1653 CORE_API FAutoConsoleVariableRef(const TCHAR* Name, FString& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default);
1654
1656 {
1657 }
1664 {
1665 return *AsVariable();
1666 }
1673 {
1674 return AsVariable();
1675 }
1676};
1677#else
1679{
1680public:
1681 FAutoConsoleVariableRef(const TCHAR* Name, int32& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1682 {
1683 }
1684
1685 FAutoConsoleVariableRef(const TCHAR* Name, float& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1686 {
1687 }
1688
1689 FAutoConsoleVariableRef(const TCHAR* Name, bool& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1690 {
1691 }
1692
1693 FAutoConsoleVariableRef(const TCHAR* Name, FString& RefValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1694 {
1695 }
1696
1697 FAutoConsoleVariableRef(const TCHAR* Name, int32& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default)
1698 {
1699 }
1700
1701 FAutoConsoleVariableRef(const TCHAR* Name, float& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default)
1702 {
1703 }
1704
1705 FAutoConsoleVariableRef(const TCHAR* Name, bool& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default)
1706 {
1707 }
1708
1709 FAutoConsoleVariableRef(const TCHAR* Name, FString& RefValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default)
1710 {
1711 }
1712};
1713#endif // NO_CVARS
1714
1715
1716// currently only supports main and render thread
1717// optimized for read access speed (no virtual function call and no thread handling if using the right functions)
1718// T: int32, float
1719template <class T>
1721{
1722public:
1723 // constructor
1724 TConsoleVariableData(const T DefaultValue)
1725 {
1726 for(uint32 i = 0; i < UE_ARRAY_COUNT(ShadowedValue); ++i)
1727 {
1728 ShadowedValue[i] = DefaultValue;
1729 }
1730 }
1731
1732 // faster than GetValueOnAnyThread()
1734 {
1736 // compiled out in shipping for performance (we can change in development later), if this get triggered you need to call GetValueOnRenderThread() or GetValueOnAnyThread(), the last one is a bit slower
1737 cvarCheckCode(ensure(GetShadowIndex() == 0)); // ensure to not block content creators, #if to optimize in shipping
1738 return ShadowedValue[0];
1739 }
1740
1741 // faster than GetValueOnAnyThread()
1743 {
1745#if !defined(__clang__) // @todo Mac: figure out how to make this compile
1746 // compiled out in shipping for performance (we can change in development later), if this get triggered you need to call GetValueOnGameThread() or GetValueOnAnyThread(), the last one is a bit slower
1747 cvarCheckCode(ensure(IsInParallelRenderingThread())); // ensure to not block content creators, #if to optimize in shipping
1748#endif
1749 return ShadowedValue[1];
1750 }
1751
1752 // convenient, for better performance consider using GetValueOnGameThread() or GetValueOnRenderThread()
1753 T GetValueOnAnyThread(bool bForceGameThread = false) const
1754 {
1756 return ShadowedValue[GetShadowIndex(bForceGameThread)];
1757 }
1758
1759private: // ----------------------------------------------------
1760
1761 // [0]:main thread, [1]: render thread, having them both in the same cache line should only hurt on write which happens rarely for cvars
1762 T ShadowedValue[2];
1763
1764 // @return 0:main thread, 1: render thread, later more
1765 static uint32 GetShadowIndex(bool bForceGameThread = false)
1766 {
1767 if (bForceGameThread)
1768 {
1770 return 0;
1771 }
1772 return IsInParallelGameThread() || IsInGameThread() ? 0 : 1;
1773 }
1774
1775 // needed for FConsoleVariable and FConsoleVariableRef2, intentionally not public
1776 T& GetReferenceOnAnyThread(bool bForceGameThread = false)
1777 {
1779 return ShadowedValue[GetShadowIndex(bForceGameThread)];
1780 }
1781
1782 template<class T2> friend class FConsoleVariable;
1783 template<class T2> friend class TAutoConsoleVariable;
1784};
1785
1786#if !NO_CVARS
1790template <class T>
1792{
1793public:
1794
1797 {
1798 if constexpr (std::is_same_v<T, bool>)
1799 {
1800 Ref = AsVariable()->AsVariableBool();
1801 }
1802 else if constexpr (std::is_same_v<T, int32>)
1803 {
1804 Ref = AsVariable()->AsVariableInt();
1805 }
1806 else if constexpr (std::is_same_v<T, float>)
1807 {
1808 Ref = AsVariable()->AsVariableFloat();
1809 }
1810 else if constexpr (std::is_same_v<T, FString>)
1811 {
1812 Ref = AsVariable()->AsVariableString();
1813 }
1814 else
1815 {
1816 static_assert(sizeof(T) == 0, "Not supported");
1817 }
1818 }
1819
1826 FORCENOINLINE TAutoConsoleVariable(const TCHAR* Name, const T& DefaultValue, const TCHAR* Help, uint32 Flags = ECVF_Default)
1827 : TAutoConsoleVariable(IConsoleManager::Get().RegisterConsoleVariable(Name, DefaultValue, Help, Flags))
1828 {
1829 }
1830
1838 FORCENOINLINE TAutoConsoleVariable(const TCHAR* Name, const T& DefaultValue, const TCHAR* Help, const FConsoleVariableDelegate& Callback, uint32 Flags = ECVF_Default)
1839 : TAutoConsoleVariable(Name, DefaultValue, Help, Flags)
1840 {
1841 AsVariable()->SetOnChangedCallback(Callback);
1842 }
1843
1845 {
1846 return Ref->GetValueOnGameThread();
1847 }
1848
1850 {
1851 return Ref->GetValueOnRenderThread();
1852 }
1853
1854 T GetValueOnAnyThread(bool bForceGameThread = false) const
1855 {
1856 return Ref->GetValueOnAnyThread(bForceGameThread);
1857 }
1858
1865 {
1866 return *AsVariable();
1867 }
1874 {
1875 return AsVariable();
1876 }
1877private:
1879};
1880
1881#else
1882template <class T>
1884{
1885public:
1886 TAutoConsoleVariable(const TCHAR* Name, const T& DefaultValue, const TCHAR* InHelp, uint32 InFlags = ECVF_Default)
1887 : Value(DefaultValue), Flags((EConsoleVariableFlags)InFlags)
1888 {
1889 }
1890
1891 T GetValueOnGameThread() const
1892 {
1893 return Value.GetValueOnGameThread();
1894 }
1895
1896 T GetValueOnRenderThread() const
1897 {
1898 return Value.GetValueOnRenderThread();
1899 }
1900
1901 T GetValueOnAnyThread(bool bForceGameThread = false) const
1902 {
1903 return Value.GetValueOnAnyThread(bForceGameThread);
1904 }
1905
1907 {
1908 return *AsVariable();
1909 }
1910
1911 const IConsoleVariable& operator*() const
1912 {
1913 return *AsVariable();
1914 }
1915
1917 {
1918 return AsVariable();
1919 }
1920
1921 const IConsoleVariable* operator->() const
1922 {
1923 return AsVariable();
1924 }
1925
1926 IConsoleVariable* AsVariable() { return this; }
1927 const IConsoleVariable* AsVariable() const { return this; }
1928
1929 virtual class TConsoleVariableData<int32>* AsVariableInt() override { return AsImpl<int32>(); }
1930 virtual class TConsoleVariableData<float>* AsVariableFloat() override { return AsImpl<float>(); }
1931 virtual class TConsoleVariableData<FString>* AsVariableString() override { return AsImpl<FString>(); }
1932
1933 virtual bool IsVariableInt() const override { return std::is_same_v<int32, T>; }
1934 virtual int32 GetInt() const override { return GetImpl<int32>(); }
1935 virtual float GetFloat() const override { return GetImpl<float>(); }
1936 virtual FString GetString() const override { return GetImpl<FString>(); }
1937 virtual bool GetBool() const override { return GetImpl<bool>(); }
1938
1939 virtual const TCHAR* GetHelp() const override
1940 {
1941 return TEXT("NO_CVARS, no help");
1942 }
1943
1944 virtual FText GetDetailedHelp() const override
1945 {
1946 return INVTEXT("NO_CVARS, no help");
1947 }
1948
1949 virtual void SetHelp(const TCHAR* InHelp) override
1950 {
1951 check(false);
1952 }
1953
1954 virtual void Release() override
1955 {
1956 check(false);
1957 }
1958
1959 virtual void SetOnChangedCallback(const FConsoleVariableDelegate &) override
1960 {
1961 check(false);
1962 }
1963
1964 virtual FConsoleVariableMulticastDelegate& OnChangedDelegate()override
1965 {
1967 check(false);
1968 return Dummy;
1969 }
1970
1971 virtual EConsoleVariableFlags GetFlags() const override
1972 {
1973 return Flags;
1974 }
1975
1976 virtual void SetFlags(const EConsoleVariableFlags InFlags) override
1977 {
1978 Flags = InFlags;
1979 }
1980
1981 virtual void Set(const TCHAR* InValue, EConsoleVariableFlags SetBy) override
1982 {
1983 LexFromString(Value.ShadowedValue[0], InValue);
1984 }
1985
1986private:
1988 FString Help;
1990
1991 template<class Y>
1992 Y GetImpl() const
1993 {
1994 if constexpr (std::is_same_v<T, Y>)
1995 {
1996 return GetValueOnAnyThread();
1997 }
1998 else
1999 {
2000 check(false);
2001 return Y();
2002 }
2003 }
2004
2005 template<class Y>
2007 {
2008 if constexpr (std::is_same_v<T, Y>)
2009 {
2010 return &Value;
2011 }
2012 else
2013 {
2014 check(false);
2015 return nullptr;
2016 }
2017 }
2018};
2019#endif // NO_CVARS
2020
2021#if !NO_CVARS
2088#else
2090{
2091public:
2092 FAutoConsoleCommand(const TCHAR* Name, const TCHAR* Help, const FConsoleCommandDelegate& Command, uint32 Flags = ECVF_Default)
2093 {
2094 }
2095
2097 {
2098 }
2099
2101 {
2102 }
2103
2105 {
2106 }
2107
2109 {
2110 }
2111
2113 {
2114 }
2115};
2116#endif
2117
2118
2119#if !NO_CVARS
2124{
2125public:
2135 : FAutoConsoleObject(IConsoleManager::Get().RegisterConsoleCommand(Name, Help, Command, Flags))
2136 {
2137 }
2138
2139
2140};
2141
2146{
2147public:
2157 : FAutoConsoleObject(IConsoleManager::Get().RegisterConsoleCommand(Name, Help, Command, Flags))
2158 {
2159 }
2160};
2161
2166{
2167public:
2168
2170 : FAutoConsoleObject(IConsoleManager::Get().RegisterConsoleCommand(Name, Help, Command, Flags))
2171 {
2172 }
2173};
2174
2179{
2180public:
2190 : FAutoConsoleObject(IConsoleManager::Get().RegisterConsoleCommand(Name, Help, Command, Flags))
2191 {
2192 }
2193};
2194
2214
2215#else
2216
2218{
2219public:
2220 template<class... Args> FAutoConsoleCommandWithWorld(const Args&...) {}
2221};
2222
2224{
2225public:
2226 template<class... Args> FAutoConsoleCommandWithWorldAndArgs(const Args&...) {}
2227};
2228
2230{
2231public:
2232 template<class... Args> FAutoConsoleCommandWithOutputDevice(const Args&...) {}
2233};
2234
2236{
2237public:
2238 template<class... Args> FAutoConsoleCommandWithWorldArgsAndOutputDevice(const Args&...) {}
2239};
2240
2241#endif
2242
2243
2245{
2246 // skip all messaging
2248 // log a warning on first usage
2249 Warn,
2250 // log an error on first usage
2251 Error,
2252 // throw an ensure on first usage
2253 Ensure,
2254 // throw an assertion on first usage
2255 Assert,
2256};
2257
2277
2299
2316
2317
2321template<typename T>
2323{
2324public:
2325 CORE_API TAutoRangedConsoleVariable(const TCHAR* Name, T DefaultValue, T MinValue, T MaxValue, const TCHAR* Help, uint32 Flags = ECVF_Default, IConsoleVariable* Parent = nullptr);
2326};
2327
2328
2330
#define FORCENOINLINE
Definition AndroidPlatform.h:142
#define checkSlow(expr)
Definition AssertionMacros.h:332
#define check(expr)
Definition AssertionMacros.h:314
#define ensureMsgf( InExpression, InFormat,...)
Definition AssertionMacros.h:465
#define ensure( InExpression)
Definition AssertionMacros.h:464
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
#define TEXT(x)
Definition Platform.h:1272
FPlatformTypes::SIZE_T SIZE_T
An unsigned integer the same size as a pointer, the same as UPTRINT.
Definition Platform.h:1150
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
FPlatformTypes::int32 int32
A 32-bit signed integer.
Definition Platform.h:1125
#define UE_FORCEINLINE_HINT
Definition Platform.h:723
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
#define DECLARE_MULTICAST_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:58
#define DECLARE_DELEGATE(DelegateName)
Definition DelegateCombinations.h:20
#define DECLARE_DELEGATE_TwoParams(DelegateName, Param1Type, Param2Type)
Definition DelegateCombinations.h:57
#define DECLARE_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:48
#define DECLARE_DELEGATE_ThreeParams(DelegateName, Param1Type, Param2Type, Param3Type)
Definition DelegateCombinations.h:66
#define DECLARE_MULTICAST_DELEGATE_OneParam(DelegateName, Param1Type)
Definition DelegateCombinations.h:49
#define SETBY_ERROR
Definition IConsoleManager.h:25
CORE_API const TCHAR * GetConsoleVariableSetByName(EConsoleVariableFlags ConsoleVariableFlags)
Definition ConsoleManager.cpp:138
EConsoleVariableFlags
Definition IConsoleManager.h:54
@ ECVF_SetByGameOverride
Definition IConsoleManager.h:163
@ ECVF_SetByHotfix
Definition IConsoleManager.h:167
@ ECVF_Preview
Definition IConsoleManager.h:99
@ ECVF_SetByPreview
Definition IConsoleManager.h:169
@ ECVF_DesktopShaderChange
Definition IConsoleManager.h:108
@ ECVF_SetByDeviceProfile
Definition IConsoleManager.h:159
@ ECVF_Set_ReplaceExistingTag
Definition IConsoleManager.h:135
@ ECVF_ExcludeFromPreview
Definition IConsoleManager.h:111
@ ECVF_Scalability
Definition IConsoleManager.h:93
@ ECVF_Default
Definition IConsoleManager.h:61
@ ECVF_RenderThreadSafe
Definition IConsoleManager.h:88
@ ECVF_SetByPluginLowPriority
Definition IConsoleManager.h:157
@ ECVF_SetBySystemSettingsIni
Definition IConsoleManager.h:155
@ ECVF_SetFlagMask
Definition IConsoleManager.h:126
@ ECVF_SetByConstructor
Definition IConsoleManager.h:145
@ ECVF_FlagMask
Definition IConsoleManager.h:56
@ ECVF_GeneralShaderChange
Definition IConsoleManager.h:102
@ ECVF_SetByCode
Definition IConsoleManager.h:173
@ ECVF_SetByScalability
Definition IConsoleManager.h:149
@ ECVF_SetByGameSetting
Definition IConsoleManager.h:151
@ ECVF_SetByConsole
Definition IConsoleManager.h:175
@ ECVF_MobileShaderChange
Definition IConsoleManager.h:105
@ ECVF_Set_SetOnly_Unsafe
Definition IConsoleManager.h:132
@ ECVF_SetByConsoleVariablesIni
Definition IConsoleManager.h:165
@ ECVF_Unregistered
Definition IConsoleManager.h:76
@ ECVF_SetByMask
Definition IConsoleManager.h:140
@ ECVF_CreatedFromIni
Definition IConsoleManager.h:81
@ ECVF_Cheat
Definition IConsoleManager.h:66
@ ECVF_SaveForNextBoot
Definition IConsoleManager.h:121
@ ECVF_ReadOnly
Definition IConsoleManager.h:71
@ ECVF_ScalabilityGroup
Definition IConsoleManager.h:96
@ ECVF_SetByPluginHighPriority
Definition IConsoleManager.h:161
@ ECVF_SetByProjectSetting
Definition IConsoleManager.h:153
@ ECVF_SetByCommandline
Definition IConsoleManager.h:171
@ ECVF_Set_NoSinkCall_Unsafe
Definition IConsoleManager.h:129
EShadowCVarBehavior
Definition IConsoleManager.h:2245
CORE_API EConsoleVariableFlags GetConsoleVariableSetByValue(const TCHAR *SetByName)
Definition ConsoleManager.cpp:152
#define cvarCheckCode(...)
Definition IConsoleManager.h:22
void LexFromString(EAudioFeature &OutFeature, const TCHAR *String)
Definition IOSAppDelegate.cpp:163
#define INVTEXT(InTextLiteral)
Definition Internationalization.h:305
#define DECLARE_LOG_CATEGORY_EXTERN(CategoryName, DefaultVerbosity, CompileTimeVerbosity)
Definition LogMacros.h:361
T * New(FMemStackBase &Mem, int32 Count=1, int32 Align=DEFAULT_ALIGNMENT)
Definition MemStack.h:259
const bool
Definition NetworkReplayStreaming.h:178
USkinnedMeshComponent float
Definition SkinnedMeshComponent.h:60
decltype(auto) Visit(Func &&Callable, Variants &&... Args)
Definition TVariant.h:271
CORE_API bool IsInParallelRenderingThread()
Definition ThreadingBase.cpp:301
CORE_API bool IsInParallelGameThread()
Definition ThreadingBase.cpp:207
CORE_API bool IsInGameThread()
Definition ThreadingBase.cpp:185
CORE_API bool IsInActualRenderingThread()
Definition ThreadingBase.cpp:258
#define UE_ARRAY_COUNT(array)
Definition UnrealTemplate.h:212
UE_INTRINSIC_CAST UE_REWRITE constexpr std::remove_reference_t< T > && MoveTemp(T &&Obj) noexcept
Definition UnrealTemplate.h:520
uint8_t uint8
Definition binka_ue_file_header.h:8
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition IConsoleManager.h:2304
Definition IConsoleManager.h:2166
FAutoConsoleCommandWithArgsAndOutputDevice(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithArgsAndOutputDeviceDelegate &Command, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:2169
Definition IConsoleManager.h:2179
FAutoConsoleCommandWithOutputDevice(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithOutputDeviceDelegate &Command, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:2189
Definition IConsoleManager.h:2146
FAutoConsoleCommandWithWorldAndArgs(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithWorldAndArgsDelegate &Command, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:2156
Definition IConsoleManager.h:2199
FAutoConsoleCommandWithWorldArgsAndOutputDevice(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithWorldArgsAndOutputDeviceDelegate &Command, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:2209
Definition IConsoleManager.h:2124
FAutoConsoleCommandWithWorld(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithWorldDelegate &Command, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:2134
Definition IConsoleManager.h:2026
Definition IConsoleManager.h:1420
IConsoleVariable * AsVariable()
Definition IConsoleManager.h:1449
FAutoConsoleObject(IConsoleObject *InTarget)
Definition IConsoleManager.h:1423
static CORE_API TArray< const FAutoConsoleObject * > & AccessGeneralShaderChangeCvars()
Definition ConsoleManager.cpp:162
virtual CORE_API ~FAutoConsoleObject()
Definition ConsoleManager.cpp:5250
static CORE_API TArray< const FAutoConsoleObject * > & AccessMobileShaderChangeCvars()
Definition ConsoleManager.cpp:169
const IConsoleVariable * AsVariable() const
Definition IConsoleManager.h:1455
static CORE_API TArray< const FAutoConsoleObject * > & AccessDesktopShaderChangeCvars()
Definition ConsoleManager.cpp:176
Definition IConsoleManager.h:2287
Definition IConsoleManager.h:1580
UE_FORCEINLINE_HINT IConsoleVariable & operator*()
Definition IConsoleManager.h:1659
UE_FORCEINLINE_HINT const IConsoleVariable & operator*() const
Definition IConsoleManager.h:1663
virtual ~FAutoConsoleVariableRef()
Definition IConsoleManager.h:1655
UE_FORCEINLINE_HINT const IConsoleVariable * operator->() const
Definition IConsoleManager.h:1672
UE_FORCEINLINE_HINT IConsoleVariable * operator->()
Definition IConsoleManager.h:1668
Definition IConsoleManager.h:2267
Definition IConsoleManager.h:1397
virtual ~FAutoConsoleVariableSink()
Definition IConsoleManager.h:1406
FConsoleVariableSinkHandle Handle
Definition IConsoleManager.h:1412
const FConsoleCommandDelegate & Command
Definition IConsoleManager.h:1411
FAutoConsoleVariableSink(const FConsoleCommandDelegate &InCommand)
Definition IConsoleManager.h:1400
Definition IConsoleManager.h:1471
UE_FORCEINLINE_HINT IConsoleVariable & operator*()
Definition IConsoleManager.h:1539
UE_FORCEINLINE_HINT const IConsoleVariable * operator->() const
Definition IConsoleManager.h:1552
UE_FORCEINLINE_HINT const IConsoleVariable & operator*() const
Definition IConsoleManager.h:1543
UE_FORCEINLINE_HINT IConsoleVariable * operator->()
Definition IConsoleManager.h:1548
Definition ConsoleManager.h:8
Definition IConsoleManager.h:834
FConsoleVariableSinkHandle(FDelegateHandle InHandle)
Definition IConsoleManager.h:840
bool HasSameHandle(const DelegateType &Delegate) const
Definition IConsoleManager.h:852
FConsoleVariableSinkHandle()
Definition IConsoleManager.h:836
void RemoveFromDelegate(MulticastDelegateType &MulticastDelegate)
Definition IConsoleManager.h:846
Definition ConsoleManager.cpp:1316
Definition IDelegateInstance.h:14
Definition NameTypes.h:617
Definition OutputDevice.h:133
Definition Text.h:385
static CORE_API FText FromString(const ANSICHAR *String)
Definition Text.cpp:1081
Definition IConsoleManager.h:879
virtual ~IConsoleCommandExecutor()=default
virtual FText GetDescription() const =0
virtual bool AllowHotKeyClose() const =0
static FName ModularFeatureName()
Definition IConsoleManager.h:886
virtual struct FInputChord GetHotKey() const =0
virtual bool AllowMultiLine() const =0
virtual FName GetName() const =0
virtual FText GetHintText() const =0
virtual void GetSuggestedCompletions(const TCHAR *Input, TArray< FConsoleSuggestion > &Out)=0
virtual void GetExecHistory(TArray< FString > &Out)=0
virtual void GetAutoCompleteSuggestions(const TCHAR *Input, TArray< FString > &Out)
Definition IConsoleManager.h:921
virtual FText GetDisplayName() const =0
virtual bool Exec(const TCHAR *Input)=0
virtual struct FInputChord GetIterateExecutorHotKey() const =0
Definition IConsoleManager.h:387
virtual bool IsVariableBool() const
Definition IConsoleManager.h:478
virtual IConsoleObject * GetParentObject() const
Definition IConsoleManager.h:465
virtual IConsoleObject * GetShadowedObject() const
Definition IConsoleManager.h:528
virtual void SetHelp(const TCHAR *Value)=0
virtual bool IsVariableFloat() const
Definition IConsoleManager.h:480
virtual void SetFlags(const EConsoleVariableFlags Value)=0
virtual class TConsoleVariableData< bool > * AsVariableBool()
Definition IConsoleManager.h:483
virtual bool IsShadowObject() const
Definition IConsoleManager.h:519
IConsoleObject()
Definition IConsoleManager.h:391
virtual FText GetDetailedHelp() const
Definition IConsoleManager.h:418
bool IsEnabled() const
Definition IConsoleManager.h:446
virtual class IConsoleVariable * AsVariable()
Definition IConsoleManager.h:473
bool TestFlags(const EConsoleVariableFlags Value) const
Definition IConsoleManager.h:438
virtual bool IsDeprecated() const
Definition IConsoleManager.h:533
virtual const TCHAR * GetHelp() const =0
virtual class TConsoleVariableData< FString > * AsVariableString()
Definition IConsoleManager.h:501
void ClearFlags(const EConsoleVariableFlags Value)
Definition IConsoleManager.h:429
virtual ~IConsoleObject()
Definition IConsoleManager.h:397
virtual bool IsVariableString() const
Definition IConsoleManager.h:481
virtual bool IsVariableInt() const
Definition IConsoleManager.h:479
virtual class TConsoleVariableData< int32 > * AsVariableInt()
Definition IConsoleManager.h:489
virtual EConsoleVariableFlags GetFlags() const =0
virtual class TConsoleVariableData< float > * AsVariableFloat()
Definition IConsoleManager.h:495
virtual struct IConsoleCommand * AsCommand()
Definition IConsoleManager.h:510
Definition IConsoleManager.h:558
virtual SIZE_T GetHistorySize()=0
void GetValue(float &OutFloatValue) const
Definition IConsoleManager.h:648
void Set(bool InValue, const FSetContext &Context)
Definition IConsoleManager.h:727
void GetValue(FString &OutStringValue) const
Definition IConsoleManager.h:652
virtual bool GetBool() const =0
void Set(float InValue, const FSetContext &Context)
Definition IConsoleManager.h:742
void Set(T Value, EConsoleVariableFlags Flags=ECVF_SetByCode, FName Tag=NAME_None)
Definition IConsoleManager.h:750
void GetValue(bool &OutBoolValue) const
Definition IConsoleManager.h:644
virtual FConsoleVariableMulticastDelegate & OnChangedDelegate()=0
void Set(const TCHAR *InValue, const FSetContext &Context)
Definition IConsoleManager.h:721
virtual void Set(const TCHAR *InValue, const FResolvedContext &Context)=0
virtual FString GetString() const =0
virtual IConsoleVariable * GetDefaultValueVariable()
Definition IConsoleManager.h:675
virtual FString GetDefaultValue()=0
void GetValue(int32 &OutIntValue) const
Definition IConsoleManager.h:640
virtual float GetFloat() const =0
virtual void LogHistory(FOutputDevice &Ar)=0
void Set(int32 InValue, const FSetContext &Context)
Definition IConsoleManager.h:736
virtual FResolvedContext ResolveContext(const FSetContext &Context)=0
virtual void Unset(EConsoleVariableFlags SetBy, FName Tag=NAME_None)=0
virtual void SetOnChangedCallback(const FConsoleVariableDelegate &Callback)=0
virtual int32 GetInt() const =0
void SetWithCurrentPriority(T Value, FName Tag=NAME_None, EConsoleVariableFlags MaxPriority=ECVF_SetByConsole, EConsoleVariableFlags MinPriority=SETBY_ERROR)
Definition IConsoleManager.h:756
void ReplaceCurrentPriorityAndTag(T InValue, EConsoleVariableFlags MaxPriority=ECVF_SetByConsole, EConsoleVariableFlags MinPriority=SETBY_ERROR)
Definition IConsoleManager.h:774
Definition IModularFeature.h:12
Definition IConsoleManager.h:1792
UE_FORCEINLINE_HINT IConsoleVariable * operator->()
Definition IConsoleManager.h:1869
T GetValueOnAnyThread(bool bForceGameThread=false) const
Definition IConsoleManager.h:1854
UE_FORCEINLINE_HINT const IConsoleVariable & operator*() const
Definition IConsoleManager.h:1864
FORCENOINLINE TAutoConsoleVariable(const TCHAR *Name, const T &DefaultValue, const TCHAR *Help, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:1826
FORCENOINLINE TAutoConsoleVariable(const TCHAR *Name, const T &DefaultValue, const TCHAR *Help, const FConsoleVariableDelegate &Callback, uint32 Flags=ECVF_Default)
Definition IConsoleManager.h:1838
T GetValueOnRenderThread() const
Definition IConsoleManager.h:1849
TAutoConsoleVariable(IConsoleVariable *ExistingObject)
Definition IConsoleManager.h:1795
UE_FORCEINLINE_HINT IConsoleVariable & operator*()
Definition IConsoleManager.h:1860
T GetValueOnGameThread() const
Definition IConsoleManager.h:1844
UE_FORCEINLINE_HINT const IConsoleVariable * operator->() const
Definition IConsoleManager.h:1873
Definition IConsoleManager.h:2323
CORE_API TAutoRangedConsoleVariable(const TCHAR *Name, T DefaultValue, T MinValue, T MaxValue, const TCHAR *Help, uint32 Flags=ECVF_Default, IConsoleVariable *Parent=nullptr)
Definition IConsoleManager.h:1721
TConsoleVariableData(const T DefaultValue)
Definition IConsoleManager.h:1724
T GetValueOnAnyThread(bool bForceGameThread=false) const
Definition IConsoleManager.h:1753
T GetValueOnGameThread() const
Definition IConsoleManager.h:1733
T GetValueOnRenderThread() const
Definition IConsoleManager.h:1742
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition SharedPointer.h:153
Definition World.h:918
uint32 GetFlags(uint32 Word3)
Definition CollisionFilterData.cpp:21
void SetFlags(uint32 &Word3, uint32 Flags)
Definition CollisionFilterData.cpp:27
Definition ConsoleManager.cpp:5215
FORCEINLINE void ReportAccess(EType Type)
Definition AccessDetection.h:56
UTransformableHandle * GetHandle(UObject *InObject, const FName &InSocketName)
Definition TransformConstraint.cpp:65
Definition IConsoleManager.h:862
FConsoleSuggestion()
Definition IConsoleManager.h:871
FString Name
Definition IConsoleManager.h:863
FConsoleSuggestion(FString InName, FString InHelp)
Definition IConsoleManager.h:866
FString Help
Definition IConsoleManager.h:864
Definition InputChord.h:24
Definition IConsoleManager.h:797
virtual bool Execute(const TArray< FString > &Args, UWorld *InWorld, class FOutputDevice &OutputDevice)=0
Definition IConsoleManager.h:961
virtual IConsoleVariable * RegisterConsoleVariableRef(const TCHAR *Name, FString &RefValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, uint32 Flags=(uint32) ECVF_Default)=0
virtual IConsoleVariable * RegisterConsoleVariable(const TCHAR *Name, bool DefaultValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual FConsoleVariableMulticastDelegate & OnCVarUnregistered()=0
virtual void UnregisterConsoleVariableSink_Handle(FConsoleVariableSinkHandle Handle)=0
virtual IConsoleVariable * FindConsoleVariable(const TCHAR *Name, bool bTrackFrequentCalls=true) const =0
virtual bool ProcessUserConsoleInput(const TCHAR *Input, FOutputDevice &Ar, UWorld *InWorld)=0
virtual bool IsNameRegistered(const TCHAR *Name) const =0
virtual IConsoleVariable * RegisterConsoleVariableRef(const TCHAR *Name, FName &RefValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
TConsoleVariableData< bool > * FindTConsoleVariableDataBool(const TCHAR *Name) const
Definition IConsoleManager.h:1191
TConsoleVariableData< int32 > * FindTConsoleVariableDataInt(const TCHAR *Name) const
Definition IConsoleManager.h:1203
TConsoleVariableData< float > * FindTConsoleVariableDataFloat(const TCHAR *Name) const
Definition IConsoleManager.h:1215
virtual IConsoleVariable * RegisterConsoleVariableRef(const TCHAR *Name, bool &RefValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual void UnregisterConsoleObject(const TCHAR *Name, bool bKeepState=true)=0
virtual IConsoleVariable * RegisterConsoleVariableRef(const TCHAR *Name, float &RefValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual void GetConsoleHistory(const TCHAR *Key, TArray< FString > &Out)=0
virtual IConsoleObject * FindConsoleObject(const TCHAR *Name, bool bTrackFrequentCalls=true) const =0
virtual void CallAllConsoleVariableSinks()=0
virtual FString FindConsoleObjectName(const IConsoleObject *Obj) const =0
virtual IConsoleVariable * RegisterConsoleVariable(const TCHAR *Name, int32 DefaultValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual IConsoleVariable * RegisterConsoleVariable(const TCHAR *Name, float DefaultValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual void UnsetAllConsoleVariablesWithTag(FName Tag, EConsoleVariableFlags Priority=ECVF_SetByMask)=0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithArgsDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithWorldArgsAndOutputDeviceDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithArgsAndOutputDeviceDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual void ForEachConsoleObjectThatStartsWith(const FConsoleObjectVisitor &Visitor, const TCHAR *ThatStartsWith=TEXT("")) const =0
virtual FConsoleObjectWithNameMulticastDelegate & OnConsoleObjectUnregistered()=0
static IConsoleManager & Get()
Definition IConsoleManager.h:1270
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithWorldDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithWorldAndArgsDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual void ForEachConsoleObjectThatContains(const FConsoleObjectVisitor &Visitor, const TCHAR *ThatContains) const =0
virtual IConsoleCommand * RegisterConsoleCommand(const TCHAR *Name, const TCHAR *Help, const FConsoleCommandWithOutputDeviceDelegate &Command, uint32 Flags=ECVF_Default)=0
virtual IConsoleVariable * RegisterConsoleVariableRef(const TCHAR *Name, int32 &RefValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual void BatchUpdateTag(FName Tag, const TMap< FName, FString > &CVarsAndValues)=0
virtual void RegisterThreadPropagation(uint32 ThreadId=0, IConsoleThreadPropagation *InCallback=0)=0
virtual void AddConsoleHistoryEntry(const TCHAR *Key, const TCHAR *Input)=0
virtual IConsoleVariable * RegisterConsoleVariableBitRef(const TCHAR *CVarName, const TCHAR *FlagName, uint32 BitNumber, uint8 *Force0MaskPtr, uint8 *Force1MaskPtr, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual IConsoleVariable * RegisterConsoleVariable(const TCHAR *Name, const TCHAR *DefaultValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual void UnregisterConsoleObject(IConsoleObject *ConsoleObject, bool bKeepState=true)=0
virtual ~IConsoleManager()
Definition IConsoleManager.h:1334
virtual IConsoleVariable * RegisterConsoleVariable(const TCHAR *Name, const FString &DefaultValue, const TCHAR *Help, uint32 Flags=ECVF_Default)=0
virtual FConsoleVariableSinkHandle RegisterConsoleVariableSink_Handle(const FConsoleCommandDelegate &Command)=0
Definition IConsoleManager.h:812
virtual void OnCVarChange(FString &Dest, const FString &NewValue)=0
virtual void OnCVarChange(float &Dest, float NewValue)=0
virtual void OnCVarChange(int32 &Dest, int32 NewValue)=0
virtual void OnCVarChange(FName &Dest, const FName &NewValue)=0
virtual void OnCVarChange(bool &Dest, bool NewValue)=0
Definition IConsoleManager.h:562
EConsoleVariableFlags Flags
Definition IConsoleManager.h:563
FName Tag
Definition IConsoleManager.h:564
Definition IConsoleManager.h:568
EConsoleVariableFlags Flags
Definition IConsoleManager.h:598
FName Tag
Definition IConsoleManager.h:601
FSetContext()
Definition IConsoleManager.h:569
EPriorityMode PriorityMode
Definition IConsoleManager.h:599
ETagMode
Definition IConsoleManager.h:588
EConsoleVariableFlags MinPriority
Definition IConsoleManager.h:605
EConsoleVariableFlags MaxPriority
Definition IConsoleManager.h:604
ETagMode TagMode
Definition IConsoleManager.h:602
FSetContext(EConsoleVariableFlags InFlags, FName InTag)
Definition IConsoleManager.h:573
EPriorityMode
Definition IConsoleManager.h:581
Definition IConsoleManager.h:1351
TGuardConsoleVariable(IConsoleVariable *ConsoleVariable, const T &NewValue)
Definition IConsoleManager.h:1361
TGuardConsoleVariable(const TCHAR *ConsoleVariableName, const T &NewValue)
Definition IConsoleManager.h:1355
IConsoleVariable * ConsoleVariable
Definition IConsoleManager.h:1353
~TGuardConsoleVariable()
Definition IConsoleManager.h:1384
T PreviousValue
Definition IConsoleManager.h:1352
TGuardConsoleVariable & operator=(const TGuardConsoleVariable &)=delete
TGuardConsoleVariable(const TGuardConsoleVariable &)=delete
TGuardConsoleVariable & operator=(TGuardConsoleVariable &&)=delete
TGuardConsoleVariable(TGuardConsoleVariable &&Right)
Definition IConsoleManager.h:1373
Definition Identity.h:18
Definition DelegateInstanceInterface.h:49