UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ModuleDescriptor.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
5#include "Containers/Array.h"
6#include "Containers/Map.h"
8#include "CoreMinimal.h"
9#include "HAL/Platform.h"
10#include "HAL/PlatformMisc.h"
12#include "UObject/NameTypes.h"
13#include "UObject/UnrealNames.h"
14
15class FJsonObject;
16class FText;
17
18enum class EModuleLoadResult;
19enum class EModuleUnloadResult;
20
25{
26 enum Type
27 {
30
33
36
39
42
45
48
51
54
57
58 // NOTE: If you add a new value, make sure to update the ToString() method below!
59 Max
60 };
61
69
76 PROJECTS_API const TCHAR* ToString( const ELoadingPhase::Type Value );
77};
78
82namespace EHostType
83{
84 enum Type : int
85 {
86 // Loads on all targets, except programs.
88
89 // Loads on all targets, except programs and the editor running commandlets.
91
92 // Loads on all targets, including supported programs.
94
95 // Loads only in cooked games.
97
98 // Only loads in uncooked games.
100
101 // Deprecated due to ambiguities. Only loads in editor and program targets, but loads in any editor mode (eg. -game, -server).
102 // Use UncookedOnly for the same behavior (eg. for editor blueprint nodes needed in uncooked games), or DeveloperTool for modules
103 // that can also be loaded in cooked games but should not be shipped (eg. debugging utilities).
105
106 // Loads on any targets where bBuildDeveloperTools is enabled.
108
109 // Loads only when the editor is starting up.
111
112 // Loads only when the editor is starting up, but not in commandlet mode.
114
115 // Loads only on editor and program targets
117
118 // Only loads on program targets.
120
121 // Loads on all targets except dedicated clients.
123
124 // Loads on all targets except dedicated servers.
126
127 // Loads in editor and client but not in commandlets.
129
130 //~ NOTE: If you add a new value, make sure to update the ToString() method below!
131 Max
132 };
133
141
148 PROJECTS_API const TCHAR* ToString( const EHostType::Type Value );
149};
150
155{
158
161
164
167
170
173
176
179
182
185
188
191
194
197
200
203
206
207
210
212 PROJECTS_API bool Read(const FJsonObject& Object, FText* OutFailReason = nullptr);
213
216
219
222
224 PROJECTS_API void Write(TJsonWriter<>& Writer) const;
225
227 PROJECTS_API void UpdateJson(FJsonObject& JsonObject) const;
228
230 static PROJECTS_API void WriteArray(TJsonWriter<>& Writer, const TCHAR* ArrayName, const TArray<FModuleDescriptor>& Modules);
231
233 static PROJECTS_API void UpdateArray(FJsonObject& JsonObject, const TCHAR* ArrayName, const TArray<FModuleDescriptor>& Modules);
234
236 PROJECTS_API bool IsCompiledInConfiguration(const FString& Platform, EBuildConfiguration Configuration, const FString& TargetName, EBuildTargetType TargetType, bool bBuildDeveloperTools, bool bBuildRequiresCookedData, const FString& Architecture = FString()) const;
237
240
243
246
249
250#if !IS_MONOLITHIC
253#endif
254};
255
FPlatformTypes::TCHAR TCHAR
Either ANSICHAR or WIDECHAR, depending on whether the platform supports wide characters or the requir...
Definition Platform.h:1135
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EBuildConfiguration
Definition GenericPlatformMisc.h:59
EBuildTargetType
Definition GenericPlatformMisc.h:158
EModuleLoadResult
Definition ModuleManager.h:49
EModuleUnloadResult
Definition ModuleManager.h:75
Definition JsonObject.h:23
Definition NameTypes.h:617
Definition Text.h:385
Definition Array.h:670
Definition JsonWriter.h:85
Definition UnrealString.h.inl:34
Definition ModuleDescriptor.h:83
PROJECTS_API EHostType::Type FromString(const TCHAR *Text)
Definition ModuleDescriptor.cpp:87
Type
Definition ModuleDescriptor.h:85
@ CookedOnly
Definition ModuleDescriptor.h:96
@ Runtime
Definition ModuleDescriptor.h:87
@ Program
Definition ModuleDescriptor.h:119
@ ServerOnly
Definition ModuleDescriptor.h:122
@ EditorNoCommandlet
Definition ModuleDescriptor.h:113
@ ClientOnlyNoCommandlet
Definition ModuleDescriptor.h:128
@ Developer
Definition ModuleDescriptor.h:104
@ UncookedOnly
Definition ModuleDescriptor.h:99
@ DeveloperTool
Definition ModuleDescriptor.h:107
@ RuntimeAndProgram
Definition ModuleDescriptor.h:93
@ Max
Definition ModuleDescriptor.h:131
@ Editor
Definition ModuleDescriptor.h:110
@ ClientOnly
Definition ModuleDescriptor.h:125
@ RuntimeNoCommandlet
Definition ModuleDescriptor.h:90
@ EditorAndProgram
Definition ModuleDescriptor.h:116
Definition ModuleDescriptor.h:25
PROJECTS_API ELoadingPhase::Type FromString(const TCHAR *Text)
Definition ModuleDescriptor.cpp:33
Type
Definition ModuleDescriptor.h:27
@ Max
Definition ModuleDescriptor.h:59
@ PostSplashScreen
Definition ModuleDescriptor.h:35
@ EarliestPossible
Definition ModuleDescriptor.h:29
@ PreLoadingScreen
Definition ModuleDescriptor.h:41
@ Default
Definition ModuleDescriptor.h:47
@ PostEngineInit
Definition ModuleDescriptor.h:53
@ PreDefault
Definition ModuleDescriptor.h:44
@ None
Definition ModuleDescriptor.h:56
@ PreEarlyLoadingScreen
Definition ModuleDescriptor.h:38
@ PostConfigInit
Definition ModuleDescriptor.h:32
@ PostDefault
Definition ModuleDescriptor.h:50
Definition ModuleDescriptor.h:258
FString ModuleName
Definition ModuleDescriptor.h:263
EHostType::Type ModuleType
Definition ModuleDescriptor.h:266
FString ModuleSourcePath
Definition ModuleDescriptor.h:260
Definition ModuleDescriptor.h:155
TArray< FString > PlatformAllowList
Definition ModuleDescriptor.h:166
static PROJECTS_API bool CheckModuleCompatibility(const TArray< FModuleDescriptor > &Modules, TArray< FString > &OutIncompatibleFiles)
Definition ModuleDescriptor.cpp:843
PROJECTS_API bool IsLoadedInCurrentConfiguration() const
Definition ModuleDescriptor.cpp:638
ELoadingPhase::Type LoadingPhase
Definition ModuleDescriptor.h:163
FName Name
Definition ModuleDescriptor.h:157
static PROJECTS_API void UpdateArray(FJsonObject &JsonObject, const TCHAR *ArrayName, const TArray< FModuleDescriptor > &Modules)
Definition ModuleDescriptor.cpp:510
static PROJECTS_API void WriteArray(TJsonWriter<> &Writer, const TCHAR *ArrayName, const TArray< FModuleDescriptor > &Modules)
Definition ModuleDescriptor.cpp:497
TMap< FString, TArray< FString > > PlatformArchitectureAllowList
Definition ModuleDescriptor.h:172
TArray< EBuildTargetType > TargetAllowList
Definition ModuleDescriptor.h:178
TMap< FString, TArray< FString > > PlatformArchitectureDenyList
Definition ModuleDescriptor.h:175
static PROJECTS_API bool ReadArray(const FJsonObject &Object, const TCHAR *Name, TArray< FModuleDescriptor > &OutModules, FText *OutFailReason=nullptr)
Definition ModuleDescriptor.cpp:265
TArray< FString > PlatformDenyList
Definition ModuleDescriptor.h:169
PROJECTS_API bool IsCompiledInCurrentConfiguration() const
Definition ModuleDescriptor.cpp:633
PROJECTS_API bool IsCompiledInConfiguration(const FString &Platform, EBuildConfiguration Configuration, const FString &TargetName, EBuildTargetType TargetType, bool bBuildDeveloperTools, bool bBuildRequiresCookedData, const FString &Architecture=FString()) const
Definition ModuleDescriptor.cpp:521
PROJECTS_API void UpdateJson(FJsonObject &JsonObject) const
Definition ModuleDescriptor.cpp:283
TArray< FString > ProgramDenyList
Definition ModuleDescriptor.h:193
TArray< EBuildTargetType > TargetDenyList
Definition ModuleDescriptor.h:181
static PROJECTS_API void LoadModulesForPhase(ELoadingPhase::Type LoadingPhase, const TArray< FModuleDescriptor > &Modules, TMap< FName, EModuleLoadResult > &ModuleLoadErrors)
Definition ModuleDescriptor.cpp:778
bool bHasExplicitPlatforms
Definition ModuleDescriptor.h:205
TArray< FString > GameTargetDenyList
Definition ModuleDescriptor.h:199
TArray< FString > ProgramAllowList
Definition ModuleDescriptor.h:190
TArray< EBuildConfiguration > TargetConfigurationAllowList
Definition ModuleDescriptor.h:184
TArray< FString > AdditionalDependencies
Definition ModuleDescriptor.h:202
static PROJECTS_API void UnloadModulesForPhase(ELoadingPhase::Type LoadingPhase, const TArray< FModuleDescriptor > &Modules, TMap< FName, EModuleUnloadResult > &OutErrors, bool bSkipUnload=false, bool bAllowUnloadCode=true)
Definition ModuleDescriptor.cpp:807
TArray< EBuildConfiguration > TargetConfigurationDenyList
Definition ModuleDescriptor.h:187
TArray< FString > GameTargetAllowList
Definition ModuleDescriptor.h:196
EHostType::Type Type
Definition ModuleDescriptor.h:160