UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
PreLoadSettingsContainer.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "CoreMinimal.h"
7#include "UObject/GCObject.h"
8
10struct FCompositeFont;
12
13//This is a helper class that we use to hold values we parse from the .ini. Clean way to access things like dynamic image brushes / fonts / etc used in our UI that
14//we want to be somewhat data driven but we can't rely on UObject support to implement(as the PreLoad stuff happens too early for UObject support)
15//This lets us set easy to change values in our .ini that are parsed at runtime and stored in this container
17{
18public:
19
20 //Helper struct to store groups of things we want to display together in the UI so that we can parse it easily in the .ini.
21 //IE: Show this background, with this text at this font size
36
37 //This is a listing of ScreenGroupings (stored by Identifier) that should be displayed in this order during a particular LoadingGroup.
38 //@TODO: TRoss, possible to move these loading groups into their own DeferreedCleanupInterface instead of the entire container being the DeferredCleanupInterface,
39 //if we want to support unloading them. For right now though, we mostly just care about loading them selectively and are ok with keeping them in memory until we clean everything up.
49
50 //Helper struct to store information required to construct a CustomSlateImageBrush. Parsed from our .ini
64
65 //Helper struct to store all BrushDefines we need to load for a given BrushLoadingGroup
71
72public:
73
75 {
76 if (Instance == nullptr)
77 {
79 }
80
81 return *Instance;
82 }
83
84 static void Destroy()
85 {
86 if (Instance)
87 {
88 delete Instance;
89 Instance = nullptr;
90 }
91 }
92
93private:
94
97 {
98 bShouldLoadBrushes = true;
100 }
101
103
104public:
105
106 //~ Begin FGCObject interface
107 PRELOADSCREEN_API virtual void AddReferencedObjects(FReferenceCollector& Collector) override;
108 virtual FString GetReferencerName() const override { return TEXT("FPreLoadSettingsContainerBase"); }
109 //~ End FGCObject interface
110
111 PRELOADSCREEN_API virtual const FSlateDynamicImageBrush* GetBrush(const FString& Identifier);
112 PRELOADSCREEN_API virtual FText GetLocalizedText(const FString& Identifier);
114 PRELOADSCREEN_API virtual FScreenGroupingBase* GetScreenGrouping(const FString& Identifier);
115
116 int GetNumScreenGroupings() const { return ScreenGroupings.Num(); }
117
118 PRELOADSCREEN_API virtual const FScreenGroupingBase* GetScreenAtIndex(int index) const;
119 PRELOADSCREEN_API virtual bool IsValidScreenIndex(int index) const;
120
121 PRELOADSCREEN_API virtual void CreateCustomSlateImageBrush(const FString& Identifier, const FString& TexturePath, const FVector2D& ImageDimensions);
123 PRELOADSCREEN_API virtual void AddScreenGrouping(const FString& Identifier, FScreenGroupingBase& ScreenGrouping);
124
125 //Maps the given font file to the given language and stores it under the FontIdentifier.
126 //Identifier maps the entire CompositeFont, so if you want to add multiple fonts for multiple languages, just store them all under the same identifer
127 PRELOADSCREEN_API virtual void BuildCustomFont(const FString& FontIdentifier, const FString& Language, const FString& FilePath);
129 PRELOADSCREEN_API virtual const FString GetSystemFontFilePath() const;
130
131 //Helper functions that parse a .ini config entry and call the appropriate create function to
132 PRELOADSCREEN_API virtual void ParseBrushConfigEntry(const FString& BrushConfigEntry);
133 PRELOADSCREEN_API virtual void ParseFontConfigEntry(const FString& SplitConfigEntry);
136
137 //Helper function to parse all .ini entries for LoadingGroups and ScreenOrder. Do these together so we can assert if
138 //we don't find a matching LoadingGroup identifier in the config. Should be run after we parse all screen groupings
142
143 //Sets the PluginContent dir so that when parsing config entries we can accept plugin relative file paths
145
146 //Tells the container rather it should actually load image brushes
148
153
157
158 //Helper function that takes in a file path and tries to reconsile it to be Plugin Specific if applicable.
159 //Ensures if file is not found in either Plugin's content dir or the original path
160 PRELOADSCREEN_API virtual FString ConvertIfPluginRelativeContentPath(const FString& FilePath);
161
162protected:
163
164 //Helper functions that verify if the supplied .ini config entry is valid to create a resource out of it
169
170protected:
172
173 /* Property Storage. Ties FName to a particular resource so we can get it by identifier. */
177
180
182
183 //This string is used to make file paths relative to a particular Plugin's content directory when parsing file paths.
185
186 // Rather we should load image brushes
188
190
192
193 //If our Font filepath is set to this, we use the system font instead of a custom font we load in
195
196 //If we supply no loading groups, use this identifier by default
198
199 // Singleton Instance -- This is only not a TSharedPtr as it needs to be cleaned up by a deferredcleanup call which directly
200 // destroys the underlying object, causing a SharedPtr crash at shutdown.
202};
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
Definition RenderDeferredCleanup.h:11
Definition GCObject.h:128
Definition NameTypes.h:617
Definition PreLoadSettingsContainer.h:17
virtual PRELOADSCREEN_API void ParseLoadingGroups(TArray< FString > &LoadingGroupIdentifiers)
Definition PreLoadSettingsContainer.cpp:141
static FPreLoadSettingsContainerBase & Get()
Definition PreLoadSettingsContainer.h:74
virtual PRELOADSCREEN_API TSharedPtr< FCompositeFont > GetFont(const FString &Identifier)
Definition PreLoadSettingsContainer.cpp:510
TMap< FName, FCustomBrushLoadingGroup > BrushLoadingGroups
Definition PreLoadSettingsContainer.h:181
TMap< FName, TSharedPtr< FStandaloneCompositeFont > > FontResources
Definition PreLoadSettingsContainer.h:176
virtual PRELOADSCREEN_API bool IsValidFontConfigString(TArray< FString > &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:109
virtual PRELOADSCREEN_API void AddScreenGrouping(const FString &Identifier, FScreenGroupingBase &ScreenGrouping)
Definition PreLoadSettingsContainer.cpp:493
int GetNumScreenGroupings() const
Definition PreLoadSettingsContainer.h:116
virtual PRELOADSCREEN_API void BuildCustomFont(const FString &FontIdentifier, const FString &Language, const FString &FilePath)
Definition PreLoadSettingsContainer.cpp:240
TMap< FName, FScreenOrderByLoadingGroup > ScreenOrderByLoadingGroups
Definition PreLoadSettingsContainer.h:178
PRELOADSCREEN_API void PerformInitialAssetLoad()
Definition PreLoadSettingsContainer.cpp:215
virtual PRELOADSCREEN_API void CreateCustomSlateImageBrush(const FString &Identifier, const FString &TexturePath, const FVector2D &ImageDimensions)
Definition PreLoadSettingsContainer.cpp:473
virtual PRELOADSCREEN_API bool IsValidLocalizedTextConfigString(TArray< FString > &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:384
float TimeToRecheckNotificationsPermission
Definition PreLoadSettingsContainer.h:151
static PRELOADSCREEN_API FString UseSystemFontOverride
Definition PreLoadSettingsContainer.h:194
float TimeToUpdateDownloadedDataSize
Definition PreLoadSettingsContainer.h:150
virtual PRELOADSCREEN_API FScreenGroupingBase * GetScreenGrouping(const FString &Identifier)
Definition PreLoadSettingsContainer.cpp:516
virtual PRELOADSCREEN_API bool BuildSystemFontFile()
Definition PreLoadSettingsContainer.cpp:369
TMap< FName, FText > LocalizedTextResources
Definition PreLoadSettingsContainer.h:175
virtual PRELOADSCREEN_API void ParseLocalizedTextConfigString(const FString &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:389
virtual PRELOADSCREEN_API const FString GetSystemFontFilePath() const
Definition PreLoadSettingsContainer.cpp:364
virtual PRELOADSCREEN_API void AddLocalizedText(const FString &Identifier, FText LocalizedText)
Definition PreLoadSettingsContainer.cpp:488
virtual PRELOADSCREEN_API bool IsValidScreenGrooupingConfigString(TArray< FString > &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:426
FString PluginContentDir
Definition PreLoadSettingsContainer.h:184
virtual FString GetReferencerName() const override
Definition PreLoadSettingsContainer.h:108
virtual PRELOADSCREEN_API void ParseScreenOrderConfigString(const FString &ScreenOrderEntry)
Definition PreLoadSettingsContainer.cpp:167
virtual PRELOADSCREEN_API bool IsValidScreenIndex(int index) const
Definition PreLoadSettingsContainer.cpp:526
float TimeToShowNotificationsPermissionModal
Definition PreLoadSettingsContainer.h:152
static void Destroy()
Definition PreLoadSettingsContainer.h:84
bool HasCreatedSystemFontFile
Definition PreLoadSettingsContainer.h:191
virtual PRELOADSCREEN_API const FSlateDynamicImageBrush * GetBrush(const FString &Identifier)
Definition PreLoadSettingsContainer.cpp:498
FName GetCurrentLoadGrouping() const
Definition PreLoadSettingsContainer.h:154
virtual void SetPluginContentDir(const FString &PluginContentDirIn)
Definition PreLoadSettingsContainer.h:144
virtual PRELOADSCREEN_API bool IsValidBrushConfig(TArray< FString > &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:41
TMap< FName, FScreenGroupingBase > ScreenGroupings
Definition PreLoadSettingsContainer.h:179
FName CurrentLoadGroup
Definition PreLoadSettingsContainer.h:189
bool bShouldLoadBrushes
Definition PreLoadSettingsContainer.h:187
static PRELOADSCREEN_API FString DefaultInitialLoadingGroupIdentifier
Definition PreLoadSettingsContainer.h:197
TMap< FName, FSlateDynamicImageBrush * > BrushResources
Definition PreLoadSettingsContainer.h:174
TArray< FString > ParsedLoadingGroupIdentifiers
Definition PreLoadSettingsContainer.h:171
float TimeToDisplayEachBackground
Definition PreLoadSettingsContainer.h:149
virtual PRELOADSCREEN_API void SetShouldLoadBrushes(bool bInShouldLoadBrushes)
Definition PreLoadSettingsContainer.cpp:468
virtual PRELOADSCREEN_API void ParseScreenGroupingConfigString(const FString &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:431
virtual PRELOADSCREEN_API void ParseAllScreenOrderEntries(TArray< FString > &LoadingGroups, TArray< FString > &ScreenOrderEntries)
Definition PreLoadSettingsContainer.cpp:159
virtual PRELOADSCREEN_API FText GetLocalizedText(const FString &Identifier)
Definition PreLoadSettingsContainer.cpp:504
PRELOADSCREEN_API void LoadGrouping(FName Identifier)
Definition PreLoadSettingsContainer.cpp:225
static PRELOADSCREEN_API FPreLoadSettingsContainerBase * Instance
Definition PreLoadSettingsContainer.h:201
virtual PRELOADSCREEN_API const FScreenGroupingBase * GetScreenAtIndex(int index) const
Definition PreLoadSettingsContainer.cpp:521
virtual PRELOADSCREEN_API FString ConvertIfPluginRelativeContentPath(const FString &FilePath)
Definition PreLoadSettingsContainer.cpp:456
virtual PRELOADSCREEN_API void ParseFontConfigEntry(const FString &SplitConfigEntry)
Definition PreLoadSettingsContainer.cpp:114
virtual PRELOADSCREEN_API void ParseBrushConfigEntry(const FString &BrushConfigEntry)
Definition PreLoadSettingsContainer.cpp:46
virtual PRELOADSCREEN_API void AddReferencedObjects(FReferenceCollector &Collector) override
Definition PreLoadSettingsContainer.cpp:33
Definition UObjectGlobals.h:2492
Definition Text.h:385
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SharedPointer.h:692
Definition CompositeFont.h:428
Definition PreLoadSettingsContainer.h:52
FCustomBrushDefine(const FString &BrushIdentifierIn, const FString &FilePathIn, FVector2D SizeIn)
Definition PreLoadSettingsContainer.h:58
FString BrushIdentifier
Definition PreLoadSettingsContainer.h:54
FVector2D Size
Definition PreLoadSettingsContainer.h:56
FString FilePath
Definition PreLoadSettingsContainer.h:55
Definition PreLoadSettingsContainer.h:67
TArray< FCustomBrushDefine > CustomBrushDefinesToLoad
Definition PreLoadSettingsContainer.h:69
Definition PreLoadSettingsContainer.h:23
FScreenGroupingBase(const FString &ScreenBackgroundIdentifierIn, const FString &TextIdentifierIn, float FontSizeIn)
Definition PreLoadSettingsContainer.h:30
FString TextIdentifier
Definition PreLoadSettingsContainer.h:27
FString ScreenBackgroundIdentifer
Definition PreLoadSettingsContainer.h:26
float FontSize
Definition PreLoadSettingsContainer.h:28
Definition PreLoadSettingsContainer.h:41
FScreenOrderByLoadingGroup()
Definition PreLoadSettingsContainer.h:45
TArray< FName > ScreenGroupings
Definition PreLoadSettingsContainer.h:43
Definition SlateDynamicImageBrush.h:15
Definition CompositeFont.h:495