UDocumentation UE5.7 10.02.2026 (Source)
API documentation for Unreal Engine 5.7
LevelInstanceInterface.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"
6#include "UObject/Interface.h"
12#include "LevelInstanceInterface.generated.h"
13
16
17UINTERFACE(BlueprintType, meta = (CannotImplementInterfaceInBlueprint), MinimalAPI)
23
33{
35
36 // Pure Interface Start
37 virtual const FLevelInstanceID& GetLevelInstanceID() const = 0;
38
39 virtual bool HasValidLevelInstanceID() const = 0;
40
41 virtual const FGuid& GetLevelInstanceGuid() const = 0;
42
43
44 UFUNCTION(BlueprintCallable, Category = Default)
45 virtual const TSoftObjectPtr<UWorld>& GetWorldAsset() const = 0;
46
47 virtual bool IsLoadingEnabled() const = 0;
48
49#if WITH_EDITOR
50 virtual bool SupportsPropertyOverrides() const { return false; }
51
52 virtual ULevelInstancePropertyOverrideAsset* GetPropertyOverrideAsset() const { return nullptr; }
53
55
57
59
60 //Default assumes it's a constant Behavior. This is needed to allow\deny the editor of actor layers at the component level. You must implement this method if your LevelInstance child support multiple runtime behavior.
61 virtual void SetDesiredRuntimeBehavior(ELevelInstanceRuntimeBehavior NewBehavior) { checkf(false, TEXT("SetDesiredRuntimeBehavior should not be called on this child of ILevelInstanceInterface. Please implement an override if required.")); }
62
63 virtual TSubclassOf<AActor> GetEditorPivotClass() const { return nullptr; }
64
65 virtual void AdjustPivotOnCreation() { }
66
67 ENGINE_API virtual bool SupportsPartialEditorLoading() const;
68#endif
69 // Pure Interface End
70
71 virtual void OnLevelInstanceLoaded() {}
72
73 FString GetWorldAssetPackage() const { return GetWorldAsset().GetUniqueID().GetLongPackageName(); }
74
75 bool IsWorldAssetValid() const { return GetWorldAsset().GetUniqueID().IsValid(); }
76
77 ENGINE_API virtual ULevelInstanceSubsystem* GetLevelInstanceSubsystem() const;
78
79 UFUNCTION(BlueprintCallable, Category = Default)
80 ENGINE_API virtual bool IsLoaded() const;
81
82 UFUNCTION(BlueprintCallable, Category = Default)
83 ENGINE_API virtual void LoadLevelInstance();
84
85 UFUNCTION(BlueprintCallable, Category = Default)
86 ENGINE_API virtual void UnloadLevelInstance();
87
88 virtual bool IsInitiallyVisible() const { return true; }
89
90 ENGINE_API virtual ULevelStreamingLevelInstance* GetLevelStreaming() const;
91
92 ENGINE_API virtual TSubclassOf<ULevelStreamingLevelInstance> GetLevelStreamingClass() const;
93
94 UFUNCTION(BlueprintCallable, Category = Default)
95 ENGINE_API virtual ULevel* GetLoadedLevel() const;
96
97#if WITH_EDITOR
98 ENGINE_API virtual void OnEdit();
100
101 virtual void OnEditChild() {}
102
103 ENGINE_API virtual void OnCommit(bool bChanged);
104 ENGINE_API virtual void OnCommitPropertyOverrides(bool bChanged);
105
106 virtual void OnCommitChild(bool bChanged) {}
107
108 bool IsInAnyEditMode() const { return IsEditing() || IsEditingPropertyOverrides(); }
109
111
112 ENGINE_API virtual bool IsEditing() const;
113
114 ENGINE_API virtual bool HasChildEdit() const;
115
116 ENGINE_API virtual bool HasParentEdit() const;
117
118 ENGINE_API virtual bool IsDirty() const;
119
120 ENGINE_API virtual bool HasDirtyChildren() const;
121
122 ENGINE_API virtual bool CanEnterEdit(FText* OutReason = nullptr) const;
123
125
126 ENGINE_API virtual bool EnterEdit(AActor* ContextActor = nullptr);
127
129
130 ENGINE_API virtual bool CanExitEdit(bool bDiscardEdits = false, FText* OutReason = nullptr) const;
131
132 ENGINE_API bool CanExitEditPropertyOverrides(bool bDiscardEdits = false, FText* OutReason = nullptr) const;
133
134 ENGINE_API virtual bool ExitEdit(bool bDiscardEdits = false);
135
137
138 ENGINE_API virtual bool SetCurrent();
139
141
142 ENGINE_API virtual const FWorldPartitionActorFilter& GetFilter() const;
143
145
146 ENGINE_API virtual void SetFilter(const FWorldPartitionActorFilter& InFilter, bool bNotify = true);
147
148 virtual void OnFilterChanged() {}
149
150 // Return supported filter types when using filter for loading actors
152
153 // Return supported filter types when setting filter through details panel
155
156 // Whether the level instance is HLOD relevant. If not, all it's actors will be excluded from HLOD.
157 ENGINE_API virtual bool IsLevelInstanceHLODRelevant() const;
158
159 ENGINE_API virtual bool HasStandaloneHLOD() const;
160#endif
161
163 UFUNCTION(BlueprintCallable, Category = Default)
164 virtual bool SetWorldAsset(TSoftObjectPtr<UWorld> WorldAsset)
165 {
166 return false;
167 }
168
169 ENGINE_API virtual void UpdateLevelInstanceFromWorldAsset();
170
171#if WITH_EDITOR
172private:
173 friend class ULevelInstanceSubsystem;
175#endif
176};
#define checkf(expr, format,...)
Definition AssertionMacros.h:315
#define TEXT(x)
Definition Platform.h:1272
UE_FORCEINLINE_HINT TSharedRef< CastToType, Mode > StaticCastSharedRef(TSharedRef< CastFromType, Mode > const &InSharedRef)
Definition SharedPointer.h:127
ELevelInstanceRuntimeBehavior
Definition LevelInstanceTypes.h:57
#define UFUNCTION(...)
Definition ObjectMacros.h:745
#define UINTERFACE(...)
Definition ObjectMacros.h:780
#define GENERATED_IINTERFACE_BODY(...)
Definition ObjectMacros.h:770
#define GENERATED_UINTERFACE_BODY(...)
Definition ObjectMacros.h:769
EWorldPartitionActorFilterType
Definition WorldPartitionActorFilter.h:13
Definition Actor.h:257
Definition Text.h:385
Definition LevelInstanceInterface.h:33
Definition Array.h:670
Definition UnrealString.h.inl:34
Definition SubclassOf.h:30
Definition Interface.h:19
Definition LevelInstanceComponent.h:26
Definition LevelInstanceInterface.h:19
Definition LevelInstancePropertyOverrideAsset.h:32
Definition LevelInstanceSubsystem.h:55
Definition LevelInstanceLevelStreaming.h:21
Definition Level.h:423
Definition Guid.h:109
Definition LevelInstanceTypes.h:14
UE_FORCEINLINE_HINT bool IsValid() const
Definition SoftObjectPath.h:343
FString GetLongPackageName() const
Definition SoftObjectPath.h:260
Definition WorldPartitionActorFilter.h:23
Definition SoftObjectPtr.h:174
UE_FORCEINLINE_HINT const FSoftObjectPath & GetUniqueID() const
Definition SoftObjectPtr.h:565