UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
IPluginManager.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 "PluginDescriptor.h"
10
12class FJsonObject;
14
19{
21 Engine,
22
25};
26
30enum class EPluginType
31{
33 Engine,
34
37
39 Project,
40
43
45 Mod,
46};
47
52{
55
58
61
63 Other,
64};
65
70{
71 FString Path;
73
74 inline bool operator==(const FExternalPluginPath& Other) const
75 {
76 return (Other.Path == Path) && (Other.Source == Source);
77 }
78
83};
84
105
106
110class IPlugin : public TSharedFromThis<IPlugin>
111{
112public:
113 /* Virtual destructor */
114 virtual ~IPlugin(){}
115
121 virtual const FString& GetName() const = 0;
122
126 virtual const FString& GetFriendlyName() const = 0;
127
133 virtual const FString& GetDescriptorFileName() const = 0;
134
140 virtual FString GetBaseDir() const = 0;
141
148
154 virtual FString GetContentDir() const = 0;
155
161 virtual FString GetMountedAssetPath() const = 0;
162
168 virtual EPluginType GetType() const = 0;
169
175 virtual bool IsEnabled() const = 0;
176
183
189 virtual bool IsMounted() const = 0;
190
196 virtual bool IsHidden() const = 0;
197
203 virtual bool CanContainContent() const = 0;
204
210 virtual bool CanContainVerse() const = 0;
211
217 virtual const FString& GetVersePath() const = 0;
218
225 virtual const FString& GetDeprecatedEngineVersion() const = 0;
226
231
235 virtual bool IsSceneGraphEnabled() const = 0;
236
242 virtual EPluginLoadedFrom GetLoadedFrom() const = 0;
243
249 virtual const FPluginDescriptor& GetDescriptor() const = 0;
250
259
260#if WITH_EDITOR
266 virtual const TSharedPtr<FJsonObject>& GetDescriptorJson() = 0;
267#endif // WITH_EDITOR
268};
269
274{
275public:
276 virtual ~IPluginManager() { }
277
281 virtual void RefreshPluginsList() = 0;
282
288 virtual bool AddToPluginsList(const FString& PluginFilename, FText* OutFailReason = nullptr) = 0;
289
295 virtual bool RemoveFromPluginsList(const FString& PluginFilename, FText* OutFailReason = nullptr) = 0;
296
303 virtual bool LoadModulesForEnabledPlugins( const ELoadingPhase::Type LoadingPhase ) = 0;
304
307
313
320
322 DECLARE_DELEGATE_TwoParams( FRegisterMountPointDelegate, const FString& /* Root content path */, const FString& /* Directory name */ );
323
331
339
345 virtual bool AreRequiredPluginsAvailable() = 0;
346
348 DECLARE_MULTICAST_DELEGATE_ThreeParams(FGetExplanationForUnavailablePackageWithPluginInfoDelegate, const FString& /*Unavailable package*/, class IPlugin* /*Plugin or null if not found*/, FStringBuilderBase& /*InOutStringBuilder*/);
349
356
365
366#if !IS_MONOLITHIC
375#endif
376
384
387
395
398
404
410 virtual void FindPluginsUnderDirectory(const FString& Directory, TArray<FString>& OutPluginFilePaths) = 0;
411
418
425
432
437
444
453
454#if WITH_EDITOR
458 virtual const TSet<FString>& GetBuiltInPluginNames() const = 0;
459
463 virtual TSharedPtr<IPlugin> GetModuleOwnerPlugin(FName ModuleName) const = 0;
464#endif //WITH_EDITOR
465
475 virtual bool AddPluginSearchPath(const FString& ExtraDiscoveryPath, bool bRefresh = true) = 0;
476
485 virtual bool RemovePluginSearchPath(const FString& PathToRemove, bool bRefresh = true) = 0;
486
492
498
503
508
513
518
523
528
533
537 virtual void MountNewlyCreatedPlugin(const FString& PluginName) = 0;
538
548
559 virtual bool MountExplicitlyLoadedPluginLocalizationData(const FString& PluginName, TUniqueFunction<void(bool bLoadedLocalization, const FString& PluginName)>&& Notification = nullptr) = 0;
560
572 virtual bool UnmountExplicitlyLoadedPluginLocalizationData(const FString& PluginName, TUniqueFunction<void(bool bUnloadedLocalization, const FString& PluginName)>&& Notification = nullptr) = 0;
573
577 virtual bool UnmountExplicitlyLoadedPlugin(const FString& PluginName, FText* OutReason) = 0;
578 virtual bool UnmountExplicitlyLoadedPlugin(const FString& PluginName, FText* OutReason, bool bAllowUnloadCode) = 0;
579
586
590 virtual FName PackageNameFromModuleName(FName ModuleName) = 0;
591
598 UE_INTERNAL virtual void EnumerateVersePathMountPoints(const UE::Core::FVersePath& VersePath, TFunctionRef<bool(FStringView /*MountedAssetPath*/, FStringView /*LeafPath*/)> Callback) = 0;
599
611
621 UE_DEPRECATED(5.6, "This has never worked and is unsafe. Do not call this function")
622 virtual bool IntegratePluginsIntoConfig(FConfigCacheIni& ConfigSystem, const TCHAR* EngineIniName, const TCHAR* PlatformName, const TCHAR* StagedPluginsFile) { return false; }
623
627 virtual void SetBinariesRootDirectories(const FString& EngineBinariesRootDir, const FString& ProjectBinariesRootDir) = 0;
628
633 virtual void SetPreloadBinaries() = 0;
634 virtual bool GetPreloadBinaries() = 0;
635
641
642public:
643
650};
#define UE_INTERNAL
Definition CoreMiscDefines.h:345
#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::ANSICHAR ANSICHAR
An ANSI character. Normally a signed type.
Definition Platform.h:1131
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
EPluginExternalSource
Definition IPluginManager.h:52
EPluginType
Definition IPluginManager.h:31
EPluginLoadedFrom
Definition IPluginManager.h:19
constexpr uint32 HashCombine(uint32 A, uint32 C)
Definition TypeHash.h:36
uint32_t uint32
Definition binka_ue_file_header.h:6
Definition ConfigCacheIni.h:1240
Definition JsonObject.h:23
Definition NameTypes.h:617
Definition Text.h:385
Definition IPluginManager.h:274
DECLARE_DELEGATE_TwoParams(FRegisterMountPointDelegate, const FString &, const FString &)
static PROJECTS_API IPluginManager & Get()
Definition PluginManager.cpp:2993
virtual FNewPluginMountedEvent & OnNewPluginContentMounted()=0
virtual bool RequiresTempTargetForCodePlugin(const FProjectDescriptor *ProjectDescriptor, const FString &Platform, EBuildConfiguration Configuration, EBuildTargetType TargetType, FText &OutReason)=0
virtual void MountNewlyCreatedPlugin(const FString &PluginName)=0
virtual FNewPluginMountedEvent & OnPluginUnmounted()=0
virtual bool GetPluginDependencies_FromDescriptor(const FPluginReferenceDescriptor &PluginDescriptor, TArray< FPluginReferenceDescriptor > &PluginDependencies)=0
virtual const TSet< FString > & GetAdditionalPluginSearchPaths() const =0
virtual bool RemoveFromPluginsList(const FString &PluginFilename, FText *OutFailReason=nullptr)=0
virtual bool MountExplicitlyLoadedPlugin_FromDescriptor(const FPluginReferenceDescriptor &PluginDescriptor)=0
virtual void GetLocalizationPathsForEnabledPlugins(TArray< FString > &OutLocResPaths)=0
virtual void SetPreloadBinaries()=0
virtual TSharedPtr< IPlugin > FindEnabledPluginFromPath(const FString &PluginPath)=0
virtual void GetExternalPluginSources(TSet< FExternalPluginPath > &OutPluginSources) const =0
virtual bool UnmountExplicitlyLoadedPlugin(const FString &PluginName, FText *OutReason)=0
virtual bool RemovePluginSearchPath(const FString &PathToRemove, bool bRefresh=true)=0
virtual bool AddPluginSearchPath(const FString &ExtraDiscoveryPath, bool bRefresh=true)=0
virtual bool AddToPluginsList(const FString &PluginFilename, FText *OutFailReason=nullptr)=0
virtual bool MountExplicitlyLoadedPlugin_FromFileName(const FString &PluginFileName)=0
virtual ELoadingPhase::Type GetLastCompletedLoadingPhase() const =0
virtual void SetBinariesRootDirectories(const FString &EngineBinariesRootDir, const FString &ProjectBinariesRootDir)=0
virtual void SetUnRegisterMountPointDelegate(const FRegisterMountPointDelegate &Delegate)=0
virtual UE_INTERNAL void EnumerateVersePathMountPoints(const UE::Core::FVersePath &VersePath, TFunctionRef< bool(FStringView, FStringView)> Callback)=0
virtual UE_INTERNAL void ResumePluginUnloadGC()=0
virtual TArray< TSharedRef< IPlugin > > GetDiscoveredPlugins()=0
virtual TSharedPtr< IPlugin > FindPlugin(const ANSICHAR *Name)=0
virtual TArray< TSharedRef< IPlugin > > GetPluginsWithPakFile() const =0
virtual bool CheckModuleCompatibility(TArray< FString > &OutIncompatibleModules, TArray< FString > &OutIncompatibleEngineModules)=0
DECLARE_EVENT_TwoParams(IPluginManager, FLoadingModulesForPhaseEvent, ELoadingPhase::Type, bool)
virtual bool UnmountExplicitlyLoadedPluginLocalizationData(const FString &PluginName, TUniqueFunction< void(bool bUnloadedLocalization, const FString &PluginName)> &&Notification=nullptr)=0
virtual ~IPluginManager()
Definition IPluginManager.h:276
virtual TArray< TSharedRef< IPlugin > > GetEnabledPlugins()=0
virtual TArray< TSharedRef< IPlugin > > GetEnabledPluginsWithContentOrVerse() const =0
virtual TSharedPtr< IPlugin > FindEnabledPlugin(const ANSICHAR *Name)=0
virtual TSharedPtr< IPlugin > FindEnabledPluginFromDescriptor(const FPluginReferenceDescriptor &PluginDesc)=0
virtual bool MountExplicitlyLoadedPluginLocalizationData(const FString &PluginName, TUniqueFunction< void(bool bLoadedLocalization, const FString &PluginName)> &&Notification=nullptr)=0
virtual FNewPluginMountedEvent & OnNewPluginCreated()=0
virtual bool CanEnablePluginInCurrentTarget(const FStringView Name)=0
virtual void RefreshPluginsList()=0
virtual bool GetPreloadBinaries()=0
virtual bool AreRequiredPluginsAvailable()=0
virtual UE_INTERNAL void SuppressPluginUnloadGC()=0
DECLARE_MULTICAST_DELEGATE_ThreeParams(FGetExplanationForUnavailablePackageWithPluginInfoDelegate, const FString &, class IPlugin *, FStringBuilderBase &)
virtual TSharedPtr< IPlugin > FindPluginFromDescriptor(const FPluginReferenceDescriptor &PluginDesc)=0
virtual UE_INTERNAL const TSet< FString > & GetPluginsEnabledAtStartup() const =0
virtual void SetRegisterMountPointDelegate(const FRegisterMountPointDelegate &Delegate)=0
virtual TArray< TSharedRef< IPlugin > > GetEnabledPluginsWithVerse() const =0
virtual bool UnmountExplicitlyLoadedPlugin(const FString &PluginName, FText *OutReason, bool bAllowUnloadCode)=0
virtual FLoadingModulesForPhaseEvent & OnLoadingPhaseComplete()=0
virtual void GetExplanationForUnavailablePackage(const FName &UnavailablePackageName, FStringBuilderBase &InOutExplanation)=0
virtual bool GetPluginDependencies_FromFileName(const FString &PluginFileName, TArray< FPluginReferenceDescriptor > &PluginDependencies)=0
virtual bool MountExplicitlyLoadedPlugin(const FString &PluginName, ELoadingPhase::Type MaxLoadingPhase=ELoadingPhase::Max)=0
virtual FNewPluginMountedEvent & OnPluginEdited()=0
virtual FNewPluginMountedEvent & OnNewPluginMounted()=0
virtual bool IntegratePluginsIntoConfig(FConfigCacheIni &ConfigSystem, const TCHAR *EngineIniName, const TCHAR *PlatformName, const TCHAR *StagedPluginsFile)
Definition IPluginManager.h:622
virtual TSharedPtr< IPlugin > FindPlugin(const FStringView Name)=0
virtual TArray< TSharedRef< IPlugin > > GetEnabledPluginsWithContent() const =0
virtual FName PackageNameFromModuleName(FName ModuleName)=0
virtual bool CanEnablePluginInCurrentTarget(const ANSICHAR *Name)=0
virtual TSharedPtr< IPlugin > FindPluginFromPath(const FString &PluginPath)=0
virtual void FindPluginsUnderDirectory(const FString &Directory, TArray< FString > &OutPluginFilePaths)=0
virtual FGetExplanationForUnavailablePackageWithPluginInfoDelegate & GetExplanationForUnavailablePackageWithPluginInfoDelegate()=0
virtual TSharedPtr< IPlugin > FindEnabledPlugin(const FStringView Name)=0
virtual bool LoadModulesForEnabledPlugins(const ELoadingPhase::Type LoadingPhase)=0
DECLARE_EVENT_OneParam(IPluginManager, FNewPluginMountedEvent, IPlugin &)
virtual bool GetPluginDependencies(const FString &PluginName, TArray< FPluginReferenceDescriptor > &PluginDependencies)=0
Definition IPluginManager.h:111
virtual bool UpdateDescriptor(const FPluginDescriptor &NewDescriptor, FText &OutFailReason)=0
virtual bool CanContainVerse() const =0
virtual FString GetContentDir() const =0
virtual FString GetBaseDir() const =0
virtual EPluginType GetType() const =0
virtual const FString & GetFriendlyName() const =0
virtual ~IPlugin()
Definition IPluginManager.h:114
virtual bool IsHidden() const =0
virtual bool CanContainContent() const =0
virtual FString GetMountedAssetPath() const =0
virtual const FPluginDescriptor & GetDescriptor() const =0
virtual bool IsEnabledByDefault(bool bAllowEnginePluginsEnabledByDefault) const =0
virtual const FString & GetName() const =0
virtual bool IsSceneGraphEnabled() const =0
virtual EPluginLoadedFrom GetLoadedFrom() const =0
virtual TOptional< uint32 > GetVerseVersion() const =0
virtual const FString & GetDeprecatedEngineVersion() const =0
virtual TArray< FString > GetExtensionBaseDirs() const =0
virtual const FString & GetDescriptorFileName() const =0
virtual const FString & GetVersePath() const =0
virtual bool IsEnabled() const =0
virtual bool IsMounted() const =0
Definition Array.h:670
Definition AssetRegistryState.h:50
Definition SharedPointer.h:1640
Definition SharedPointer.h:692
Definition FunctionFwd.h:19
Definition VersePath.h:14
Type
Definition ModuleDescriptor.h:27
@ Max
Definition ModuleDescriptor.h:59
Definition IPluginManager.h:70
EPluginExternalSource Source
Definition IPluginManager.h:72
FString Path
Definition IPluginManager.h:71
bool operator==(const FExternalPluginPath &Other) const
Definition IPluginManager.h:74
friend uint32 GetTypeHash(const FExternalPluginPath &ExternalPluginPath)
Definition IPluginManager.h:79
Definition PluginDescriptor.h:39
Definition PluginReferenceDescriptor.h:27
Definition IPluginManager.h:89
FString Name
Definition IPluginManager.h:91
FString PluginDirectory
Definition IPluginManager.h:94
bool bIsEnabled
Definition IPluginManager.h:97
EPluginLoadedFrom LoadedFrom
Definition IPluginManager.h:100
FPluginDescriptor Descriptor
Definition IPluginManager.h:103
Definition ProjectDescriptor.h:43
Definition Optional.h:131