UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
DeviceProfile.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3/*=============================================================================
4 DeviceProfile.h: Declares the UDeviceProfile class.
5=============================================================================*/
6
7#pragma once
8
9#include "CoreMinimal.h"
13#include "DeviceProfile.generated.h"
14
16
18
19
20UCLASS(config=DeviceProfiles, perObjectConfig, MinimalAPI)
22{
24
25
26 UPROPERTY(VisibleAnywhere, config, Category=DeviceSettings)
27 FString DeviceType;
28
30 UPROPERTY(EditAnywhere, config, Category=DeviceSettings)
31 FString BaseProfileName;
32
34 UPROPERTY(EditAnywhere, config, Category = DeviceSettings)
35 uint32 bIsVisibleForAssets : 1;
36
38 UPROPERTY()
40
42 bool bVisible;
43
45 FString ConfigPlatform;
46
48 TArray<FString> FragmentIncludes;
49
50public:
51
52 /* Need to add missing entries in TextureLODGroups to match enum TextureGroup when the device profile is reloaded*/
53 virtual void PostReloadConfig(class FProperty* PropertyThatWasLoaded) override
54 {
55 Super::PostReloadConfig(PropertyThatWasLoaded);
56
57 ValidateTextureLODGroups();
58 }
59
61 UPROPERTY(EditAnywhere, config, Category=ConsoleVariables)
62 TArray<FString> CVars;
63
65 UPROPERTY(EditAnywhere, config, Category = "DeviceProfile Matching Rules")
67
69 virtual const TCHAR* GetConfigOverridePlatform() const override
70 {
71 return ConfigPlatform.Len() ? *ConfigPlatform : Super::GetConfigOverridePlatform();
72 }
73
79 ENGINE_API void GatherParentCVarInformationRecursively(OUT TMap<FString, FString>& CVarInformation) const;
80
85 {
86 return CVarsUpdatedDelegate;
87 }
88
94 ENGINE_API const FSelectedFragmentProperties* GetFragmentByTag(FName& FragmentTag) const;
95
96 bool IsVisibleForAssets()const { return bIsVisibleForAssets; }
97public:
101 ENGINE_API UTextureLODSettings* GetTextureLODSettings() const;
102
106 ENGINE_API UDeviceProfile* GetParentProfile(bool bIncludeDefaultObject = false) const;
107
108private:
109 // Make sure our TextureLODGroups array is sorted correctly and complete
110 ENGINE_API void ValidateTextureLODGroups();
112 FOnCVarsUpdated CVarsUpdatedDelegate;
113
114public:
115 // The selected result after running the MatchingRules process.
117
118 /* ValidateProfile()
119 * Validate the Profile after changes by loading it's config (.ini)
120 */
121 ENGINE_API void ValidateProfile();
122
123 //~ Begin UObject Interface
124 ENGINE_API virtual void BeginDestroy() override;
125 //~ End UObject Interface
126
127#if WITH_EDITOR
128 //~ Begin UObject Interface
129 ENGINE_API virtual void PostEditChangeProperty( FPropertyChangedEvent& PropertyChangedEvent ) override;
130 //~ End UObject Interface
131
132 ENGINE_API bool ModifyCVarValue(const FString& CVarName, const FString& CVarValue, bool bAddIfNonExistant = false);
133 ENGINE_API FString GetCVarValue(const FString& CVarName) const;
134
139 UE_DEPRECATED(5.6, "GetConsolidatedCVars is no longer supported due to being non-thread safe, use ForEachConsolidatedCvar or GetConsolidatedCVarValue instead")
140 ENGINE_API const TMap<FString, FString>& GetConsolidatedCVars() const;
141
146 ENGINE_API void ForEachConsolidatedCVar(const TFunctionRef<bool(const FString&, const FString&)>& FuncRef) const;
147
155 ENGINE_API bool GetConsolidatedCVarValue(const TCHAR* CVarName, FString& OutString, bool bCheckDefaults = false) const;
156
164 ENGINE_API bool GetConsolidatedCVarValue(const TCHAR* CVarName, int32& OutValue, bool bCheckDefaults = false) const;
165
173 ENGINE_API bool GetConsolidatedCVarValue(const TCHAR* CVarName, float& OutValue, bool bCheckDefaults = false) const;
174
175private:
178
179private:
181 mutable TMap<FString, FString> ConsolidatedCVars;
183
184#endif
185
186#if ALLOW_OTHER_PLATFORM_CONFIG
187public:
194
195private:
196
197 // calculate the cvars for another platform's deviceprofile
199
202
205
207 EPlatformMemorySizeBucket PreviewMemorySizeBucket = EPlatformMemorySizeBucket::Default;
208#endif
209};
#define UE_DEPRECATED(Version, Message)
Definition CoreMiscDefines.h:302
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 OUT
Definition Platform.h:897
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
UE::FPlatformRecursiveMutex FCriticalSection
Definition CriticalSection.h:53
#define DECLARE_DELEGATE(DelegateName)
Definition DelegateCombinations.h:20
EPlatformMemorySizeBucket
Definition GenericPlatformMemory.h:54
#define UPROPERTY(...)
UObject definition macros.
Definition ObjectMacros.h:744
#define GENERATED_UCLASS_BODY(...)
Definition ObjectMacros.h:768
#define UCLASS(...)
Definition ObjectMacros.h:776
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition NameTypes.h:617
Definition UnrealType.h:174
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition UnrealString.h.inl:34
Definition DeviceProfile.h:22
FOnCVarsUpdated & OnCVarsUpdated()
Definition DeviceProfile.h:84
TArray< FSelectedFragmentProperties > SelectedFragments
Definition DeviceProfile.h:116
virtual void PostReloadConfig(class FProperty *PropertyThatWasLoaded) override
Definition DeviceProfile.h:53
bool IsVisibleForAssets() const
Definition DeviceProfile.h:96
Definition TextureLODSettings.h:137
@ false
Definition radaudio_common.h:23
Definition DeviceProfileMatching.h:169
Definition UnrealType.h:6865
Definition DeviceProfileMatching.h:15
Definition ObjectPtr.h:488