UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
ModuleObserver.h
Go to the documentation of this file.
1// Copyright Epic Games, Inc. All Rights Reserved.
2
3#pragma once
4
6
9{
10public:
11
19 : ModuleName(InModuleName)
20 , OnModuleLoaded(InOnModuleLoaded)
21 , OnModuleUnloaded(InOnModuleUnloaded)
22 {
24
25 if (ModuleManager.IsModuleLoaded(ModuleName))
26 {
27 OnModuleLoaded.ExecuteIfBound();
28 }
29
30 ModuleManager.OnModulesChanged().AddRaw(this, &FModuleObserver::OnModulesChanged);
31 }
32
34 {
36
37 if (ModuleManager.IsModuleLoaded(ModuleName))
38 {
39 OnModuleUnloaded.ExecuteIfBound();
40 }
41
42 ModuleManager.OnModulesChanged().RemoveAll(this);
43 }
44
45private:
46
48 void OnModulesChanged(FName InModuleName, EModuleChangeReason Reason)
49 {
50 if (InModuleName != ModuleName || Reason == EModuleChangeReason::PluginDirectoryChanged)
51 {
52 return;
53 }
54
55 switch (Reason)
56 {
57 case EModuleChangeReason::ModuleLoaded: OnModuleLoaded.ExecuteIfBound(); break;
58 case EModuleChangeReason::ModuleUnloaded: OnModuleUnloaded.ExecuteIfBound(); break;
59 }
60 }
61
62private:
64 FName ModuleName;
66 FSimpleDelegate OnModuleLoaded;
68 FSimpleDelegate OnModuleUnloaded;
69};
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
EModuleChangeReason
Definition ModuleManager.h:89
Definition ModuleManager.h:172
static CORE_API FModuleManager & Get()
Definition ModuleManager.cpp:199
Definition ModuleObserver.h:9
~FModuleObserver()
Definition ModuleObserver.h:33
FModuleObserver(FName InModuleName, FSimpleDelegate InOnModuleLoaded, FSimpleDelegate InOnModuleUnloaded)
Definition ModuleObserver.h:18
Definition NameTypes.h:617