Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
ULevelStreamingSubsystem 클래스 참조

#include <LevelStreamingSubsystem.h>

ULevelStreamingSubsystem에 대한 상속 다이어그램 :
Inheritance graph
ULevelStreamingSubsystem에 대한 협력 다이어그램:
Collaboration graph

Public 멤버 함수

 ULevelStreamingSubsystem ()
 
virtual void Initialize (FSubsystemCollectionBase &Collection) override
 
void RequestLevelLoad (ULevelStreamingData *ReqLevelLoadPipelineData)
 
FORCEINLINE bool IsAvailable () const
 

Public 속성

bool bDebugMode = true
 
int32 StreamingWindowSize = 3
 
FOnLevelLoadCompleted OnLevelLoadCompleted
 
FOnLevelLoadedInMemory OnLevelLoadedInMemory
 
FOnPlacePlayerTheWorld OnPlacePlayerTheWorld
 

Protected 멤버 함수

virtual void Tick (float DeltaTime) override
 
virtual bool IsTickable () const override
 
FString HandleLevelLoading (ULevelStreamingData *ReqLevelLoadPipelineData, ULevelStreaming *TargetLevel)
 
bool InvalidateLevelLoadRequest (const ULevelStreamingData *ReqLevelLoadPipelineData, ULevelStreaming *&PreviousLevelStreaming) const
 
virtual TStatId GetStatId () const override
 

Private 멤버 함수

void FinalizeLevelLoadProcess (ELevelStreamingPhase Phase)
 
void StartChain (ELevelStreamingPhase Phase)
 
void OnLevelLoaded ()
 
void OnLevelShown ()
 
void StartDuringLoadPhase ()
 
void EvaluateDuringLoadCompletion ()
 
void NotifyLevelLoaded (ULevelRuleData *Rule) const
 

Private 속성

TArray< TObjectPtr< ULevelStreamingEffect > > AllRegisteredEffects
 
TObjectPtr< ULevelStreamingDataLevelStreamingData
 
TWeakObjectPtr< ULevelStreaming > LevelToLoad
 
TWeakObjectPtr< ULevelStreaming > LevelToUnload
 
TObjectPtr< UDataBundleRegistryBundleRegistry
 
FLevelStreamingDeque LevelStreamingDeque
 
FEffectChainExecutor ChainExecutor
 
bool bIsLevelLoadRequested = false
 
bool bAsyncLoading = false
 
bool bLevelLoadDone = false
 
bool bDuringLoadChainDone = false
 
bool bFakeLoadingDone = false
 
FTSTicker::FDelegateHandle FakeLoadingTickerHandle
 

생성자 & 소멸자 문서화

◆ ULevelStreamingSubsystem()

ULevelStreamingSubsystem::ULevelStreamingSubsystem ( )
15{ }

멤버 함수 문서화

◆ EvaluateDuringLoadCompletion()

void ULevelStreamingSubsystem::EvaluateDuringLoadCompletion ( )
private
295{
296 if (bDuringLoadChainDone == false || bFakeLoadingDone == false || bLevelLoadDone == false)
297 {
298 return;
299 }
300
301 if (LevelToUnload.Get() != nullptr)
302 {
303 LevelToUnload.Get()->SetShouldBeVisible(false);
304 LevelToUnload.Get()->SetShouldBeLoaded(true);
305 }
306
307 if (LevelToLoad.IsValid() == false)
308 {
309 return;
310 }
311
312 ULevelStreaming* LevelToEvict = nullptr;
313
315 {
316 // 직전에 방문했던 레벨 → Deque에서 꺼내 재사용 (언로드 없음)
317 LevelStreamingDeque.TryExtract(LevelToLoad.Get(), LevelToEvict);
318 }
320 {
321 // 새 레벨이고 윈도우 초과 → 가장 오래된 레벨 제거 후 언로드
322 if (LevelStreamingDeque.TryPopFront(LevelToEvict))
323 {
324 //꺼두면 GC가 알아서 언로드된 레벨을 회수한다 함.
325 LevelToEvict->SetShouldBeLoaded(false);
326 }
327 }
328
329 //아오 이 그지 같은거 Visible 상태가 False에서 True로 바뀔때만 델리게이트 호출해주네 씨바.
330 LevelToLoad->OnLevelShown.AddDynamic(this, &ULevelStreamingSubsystem::OnLevelShown);
331 LevelToLoad->SetShouldBeVisible(true);
332 LevelToLoad->SetShouldBeLoaded(true);
333}
FLevelStreamingDeque LevelStreamingDeque
Definition LevelStreamingSubsystem.h:116
bool bLevelLoadDone
Definition LevelStreamingSubsystem.h:124
int32 StreamingWindowSize
Definition LevelStreamingSubsystem.h:87
TWeakObjectPtr< ULevelStreaming > LevelToLoad
Definition LevelStreamingSubsystem.h:107
TWeakObjectPtr< ULevelStreaming > LevelToUnload
Definition LevelStreamingSubsystem.h:110
void OnLevelShown()
Definition LevelStreamingSubsystem.cpp:349
bool bDuringLoadChainDone
Definition LevelStreamingSubsystem.h:125
bool bFakeLoadingDone
Definition LevelStreamingSubsystem.h:126
bool TryExtract(ULevelStreaming *Element, OUT ULevelStreaming *&OutElement)
Definition LevelStreamingDeque.cpp:53
FORCEINLINE int Size() const
Definition LevelStreamingDeque.h:29
bool Contains(const ULevelStreaming *Element) const
Definition LevelStreamingDeque.cpp:40
bool TryPopFront(OUT ULevelStreaming *&Element)
Definition LevelStreamingDeque.cpp:26
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ FinalizeLevelLoadProcess()

void ULevelStreamingSubsystem::FinalizeLevelLoadProcess ( ELevelStreamingPhase  Phase)
private
185{
186 switch (Phase)
187 {
188 case ELevelStreamingPhase::PreLoad:
189 {
191 break;
192 }
193
194 case ELevelStreamingPhase::DuringLoad: //Tick 함수에서 호출될때 걸림.
195 {
198
199 ULevelPlayerPlacer* PlayerPlacer = LevelStreamingData->CreatePlayerPlacer(this);
200
201 GetWorld()->GetTimerManager().SetTimerForNextTick([this, PlayerPlacer]
202 {
203 if (LevelToLoad.IsValid() == false)
204 {
205 return;
206 }
207
208 OnPlacePlayerTheWorld.Broadcast(PlayerPlacer, LevelToLoad->GetWorld());
209 });
210
211 if (PlayerPlacer)
212 {
213 PlayerPlacer->PlacePlayer(LevelToLoad->GetWorld());
214 }
215
216 ULevelRuleData* NewRule = LevelStreamingData->LevelRule.Get();
217
218 if (BundleRegistry == nullptr)
219 {
220 NotifyLevelLoaded(NewRule);
221 return;
222 }
223
224 const TArray<FGameplayTag>& BundleTags = LevelStreamingData->UsingBundlesTag;
225
226 BundleRegistry->ReleaseUnusedBundles(BundleTags);
227
228 if (BundleTags.IsEmpty())
229 {
230 NotifyLevelLoaded(NewRule);
231 return;
232 }
233
234 BundleRegistry->RequestLoad(BundleTags, [this, NewRule]()
235 {
236 NotifyLevelLoaded(NewRule);
237 });
238
239 break;
240 }
241
242 case ELevelStreamingPhase::PostLoad:
243 {
244 bIsLevelLoadRequested = false;
245 bDuringLoadChainDone = false;
246 bFakeLoadingDone = false;
247 bLevelLoadDone = false;
248 bAsyncLoading = false;
249
250 // LevelToUnload가 Deque에 없으면 먼저 삽입 (최초 전환 시 초기 레벨이 추적되지 않는 문제 방지)
251 if (LevelToUnload.IsValid() && LevelStreamingDeque.Contains(LevelToUnload.Get()) == false)
252 {
254 }
255
257 OnLevelLoadCompleted.Broadcast();
258
259 LevelToUnload.Reset();
260
261 if (bDebugMode)
262 {
263 LOG_INFO(LogCKLevel, "====================================================================");
264 }
265
266 break;
267 }
268 }
269}
#define LOG_INFO(Category, Format,...)
Definition CK_UE.h:30
Definition LevelPlayerPlacer.h:14
Definition LevelRuleData.h:63
void StartDuringLoadPhase()
Definition LevelStreamingSubsystem.cpp:272
void EvaluateDuringLoadCompletion()
Definition LevelStreamingSubsystem.cpp:294
FOnPlacePlayerTheWorld OnPlacePlayerTheWorld
Definition LevelStreamingSubsystem.h:96
FOnLevelLoadCompleted OnLevelLoadCompleted
Definition LevelStreamingSubsystem.h:90
bool bIsLevelLoadRequested
Definition LevelStreamingSubsystem.h:122
bool bDebugMode
Definition LevelStreamingSubsystem.h:84
TObjectPtr< ULevelStreamingData > LevelStreamingData
Definition LevelStreamingSubsystem.h:104
void NotifyLevelLoaded(ULevelRuleData *Rule) const
Definition LevelStreamingSubsystem.cpp:361
bool bAsyncLoading
Definition LevelStreamingSubsystem.h:123
TObjectPtr< UDataBundleRegistry > BundleRegistry
Definition LevelStreamingSubsystem.h:113
void PushBack(ULevelStreaming *Element)
Definition LevelStreamingDeque.cpp:12
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetStatId()

virtual TStatId ULevelStreamingSubsystem::GetStatId ( ) const
inlineoverrideprotectedvirtual
58 {
59 RETURN_QUICK_DECLARE_CYCLE_STAT(ULevelStreamingSubsystem, STATGROUP_Tickables);
60 }
Definition LevelStreamingSubsystem.h:32

◆ HandleLevelLoading()

FString ULevelStreamingSubsystem::HandleLevelLoading ( ULevelStreamingData ReqLevelLoadPipelineData,
ULevelStreaming *  TargetLevel 
)
protected
70{
71 FString TargetLevelName;
72
73 if (TargetLevel && TargetLevel->IsLevelLoaded()) // 이미 로딩된 레벨 재사용.
74 {
75 TargetLevelName = *TargetLevel->GetWorldAsset().GetAssetName();
76 TargetLevel->SetShouldBeVisible(false);
77 LevelToLoad = TargetLevel;
78 bLevelLoadDone = true;
79 LOG_INFO(LogCKLevel, "[HandleLevelLoading] Reuse already loaded: '%s'", *TargetLevelName);
80 }
81 else if (TargetLevel) //Persistent Level에 등록은 되어있지만 아직 미로드.
82 {
83 TargetLevelName = *TargetLevel->GetWorldAsset().GetAssetName();
84 bAsyncLoading = true;
85
86 LevelToLoad = TargetLevel;
87 LevelToLoad->SetShouldBeLoaded(true);
88 LevelToLoad->SetShouldBeVisible(false);
89 LevelToLoad->OnLevelLoaded.AddDynamic(this, &ULevelStreamingSubsystem::OnLevelLoaded);
90 LOG_INFO(LogCKLevel, "[HandleLevelLoading] Async load registered level: '%s'", *TargetLevelName);
91 }
92 else // 등록되지 않은 레벨 → 동적 로딩.
93 {
94 TargetLevelName = ReqLevelLoadPipelineData->TargetLevel.PrimaryAssetName.ToString();
95
96 bool bOutSuccess = false;
97 bAsyncLoading = true;
98
99 auto StreamingLevel = ULevelStreamingDynamic::LoadLevelInstance(this, TargetLevelName, FVector(), FRotator(), bOutSuccess);
100 ensureMsgf(bOutSuccess && StreamingLevel, TEXT("Failed to dynamically load level '%s'"), *TargetLevelName);
101
102 LevelToLoad = StreamingLevel;
103 LevelToLoad->SetShouldBeVisible(false);
104 LevelToLoad->OnLevelLoaded.AddDynamic(this, &ULevelStreamingSubsystem::OnLevelLoaded);
105 LOG_INFO(LogCKLevel, "[HandleLevelLoading] Dynamic load: '%s', success=%s", *TargetLevelName, bOutSuccess ? TEXT("true") : TEXT("false"));
106 }
107
108 return TargetLevelName;
109}
FPrimaryAssetId TargetLevel
Definition LevelStreamingData.h:32
void OnLevelLoaded()
Definition LevelStreamingSubsystem.cpp:336
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Initialize()

void ULevelStreamingSubsystem::Initialize ( FSubsystemCollectionBase &  Collection)
overridevirtual
19{
20 Super::Initialize(Collection);
21 BundleRegistry = GetGameInstance()->GetSubsystem<UDataBundleRegistry>();
22}
DataBundle의 로드/언로드를 관리하는 GameInstance 서브시스템.
Definition DataBundleRegistry.h:45

◆ InvalidateLevelLoadRequest()

bool ULevelStreamingSubsystem::InvalidateLevelLoadRequest ( const ULevelStreamingData ReqLevelLoadPipelineData,
ULevelStreaming *&  PreviousLevelStreaming 
) const
protected
38{
39 if (ReqLevelLoadPipelineData == nullptr)
40 {
41 LOG_ERROR(LogCKLevel, "%s is null", NAMEOF(ULevelStreamingData));
42 return true;
43 }
44
46 {
47 LOG_ERROR(LogCKLevel, "이미 로딩 중입니다.");
48 return true;
49 }
50
51 if (StreamingWindowSize <= 0)
52 {
53 LOG_ERROR(LogCKLevel, "StreamingWindowSize 값이 잘못되었습니다. ");
54 return true;
55 }
56
57 PreviousLevelStreaming = FLevelStreamingLocator::FindVisible(GetWorld());
58
59 if (PreviousLevelStreaming == nullptr)
60 {
61 LOG_ERROR(LogCKLevel, "스트리밍할 레벨을 찾을 수 없습니다.");
62 return true;
63 }
64
65 return false;
66}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:32
#define NAMEOF(Type)
Definition CK_UE.h:26
Definition LevelStreamingData.h:18
static ULevelStreaming * FindVisible(const UWorld *World)
현재 Visible 상태인 StreamingLevel을 반환합니다.
Definition LevelStreamingLocator.cpp:34
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ IsAvailable()

FORCEINLINE bool ULevelStreamingSubsystem::IsAvailable ( ) const
inline
45 {
46 const UWorld* World = GetGameInstance()->GetWorld();
47 return World && World->GetStreamingLevels().Num() > 0;
48 }
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ IsTickable()

bool ULevelStreamingSubsystem::IsTickable ( ) const
overrideprotectedvirtual
32{
33 return ChainExecutor.IsActive() && FTickableGameObject::IsTickable();
34}
FEffectChainExecutor ChainExecutor
Definition LevelStreamingSubsystem.h:119
bool IsActive() const
체인이 현재 실행 중인지 여부를 반환합니다.
Definition EffectChainExecutor.h:63
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ NotifyLevelLoaded()

void ULevelStreamingSubsystem::NotifyLevelLoaded ( ULevelRuleData Rule) const
private
362{
363 if (Rule == nullptr)
364 {
365 LOG_WARNING(LogCKLevel, "레벨 룰이 없습니다. ");
366 }
367
368 FTimerManager& Manager = GetWorld()->GetTimerManager();
369
370 Manager.SetTimerForNextTick([this, Rule]()
371 {
372 this->OnLevelLoadedInMemory.Broadcast(Rule);
373 });
374}
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:31
FOnLevelLoadedInMemory OnLevelLoadedInMemory
Definition LevelStreamingSubsystem.h:93
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnLevelLoaded()

void ULevelStreamingSubsystem::OnLevelLoaded ( )
private
337{
338 if (LevelToLoad.IsValid())
339 {
340 LOG_INFO(LogCKLevel, "'%s' is loaded.", *LevelToLoad->GetWorldAsset().GetAssetName());
341 LevelToLoad->OnLevelLoaded.RemoveDynamic(this, &ULevelStreamingSubsystem::OnLevelLoaded); //다시 실행하면 에러나니까 여기서 해제함.
342 }
343
344 bLevelLoadDone = true;
346}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnLevelShown()

void ULevelStreamingSubsystem::OnLevelShown ( )
private
350{
351 if (LevelToLoad.IsValid())
352 {
353 LOG_INFO(LogCKLevel, "'%s' is shown.", *LevelToLoad->GetWorldAsset().GetAssetName());
354 LevelToLoad->OnLevelShown.RemoveDynamic(this, &ULevelStreamingSubsystem::OnLevelShown);
355 }
356
357 StartChain(ELevelStreamingPhase::PostLoad);
358}
void StartChain(ELevelStreamingPhase Phase)
Definition LevelStreamingSubsystem.cpp:168
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ RequestLevelLoad()

void ULevelStreamingSubsystem::RequestLevelLoad ( ULevelStreamingData ReqLevelLoadPipelineData)
113{
114 ULevelStreaming* PreviousLevelStreaming;
115
116 if (InvalidateLevelLoadRequest(ReqLevelLoadPipelineData, PreviousLevelStreaming))
117 {
118 return;
119 }
120
122 LevelStreamingData = ReqLevelLoadPipelineData;
123
124 const FString LevelToUnloadName = PreviousLevelStreaming->GetWorldAsset().GetAssetName();
125
126 if (LevelToLoad.IsValid() && LevelToLoad.Get()->GetWorld() != nullptr)
127 {
129 }
130 else
131 {
132 LevelToUnload = FLevelStreamingLocator::FindByName(GetWorld(), *LevelToUnloadName);
133 }
134
135 if (LevelToUnload == nullptr)
136 {
137 LOG_ERROR(LogCKLevel, "스트리밍할 레벨을 찾을 수 없습니다.");
138 bIsLevelLoadRequested = false;
139 LevelStreamingData = nullptr;
140 return;
141 }
142
143 TArray<ULevelStreamingEffect*> CreatedEffects = ReqLevelLoadPipelineData->CreateEffects(this);
144
145 AllRegisteredEffects.Reset();
146
147 for (ULevelStreamingEffect* Effect : CreatedEffects)
148 {
149 AllRegisteredEffects.Add(Effect);
150 }
151
152 ChainExecutor.SetupEffects(CreatedEffects);
153
154 ULevelStreaming* TargetLevel = FLevelStreamingLocator::FindByName(GetWorld(), ReqLevelLoadPipelineData->TargetLevel.PrimaryAssetName);
155 LOG_INFO(LogCKLevel, "[RequestLevelLoad] TargetAssetName='%s', FindByName=%s", *ReqLevelLoadPipelineData->TargetLevel.PrimaryAssetName.ToString(), TargetLevel ? TEXT("Found") : TEXT("NotFound"));
156
157 FString TargetLevelName = HandleLevelLoading(ReqLevelLoadPipelineData, TargetLevel);
158
159 if (bDebugMode)
160 {
161 LOG_INFO(LogCKLevel, "'%s' --> '%s'", *LevelToUnloadName, *TargetLevelName);
162 }
163
164 StartChain(ELevelStreamingPhase::PreLoad);
165}
TArray< ULevelStreamingEffect * > CreateEffects(UObject *Outer) const
Definition LevelStreamingData.cpp:24
Definition LevelStreamingEffect.h:18
FString HandleLevelLoading(ULevelStreamingData *ReqLevelLoadPipelineData, ULevelStreaming *TargetLevel)
Definition LevelStreamingSubsystem.cpp:69
TArray< TObjectPtr< ULevelStreamingEffect > > AllRegisteredEffects
Definition LevelStreamingSubsystem.h:101
bool InvalidateLevelLoadRequest(const ULevelStreamingData *ReqLevelLoadPipelineData, ULevelStreaming *&PreviousLevelStreaming) const
Definition LevelStreamingSubsystem.cpp:37
void SetupEffects(const TArray< ULevelStreamingEffect * > &AllEffects)
이펙트 목록을 Phase별로 분류해 내부 체인 맵을 구성합니다.
Definition EffectChainExecutor.cpp:13
static ULevelStreaming * FindByName(const UWorld *World, FName LevelName)
StreamingLevels에서 에셋 이름이 일치하는 레벨을 반환합니다.
Definition LevelStreamingLocator.cpp:9
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ StartChain()

void ULevelStreamingSubsystem::StartChain ( ELevelStreamingPhase  Phase)
private
169{
170 auto ContextFactory = [this]()
171 {
173 };
174
175 auto OnCompleted = [this](const ELevelStreamingPhase CompletedPhase)
176 {
177 FinalizeLevelLoadProcess(CompletedPhase);
178 };
179
180 ChainExecutor.Start(Phase, MoveTemp(ContextFactory), MoveTemp(OnCompleted), bDebugMode);
181}
ELevelStreamingPhase
Definition CK_ELevelType.h:5
void FinalizeLevelLoadProcess(ELevelStreamingPhase Phase)
Definition LevelStreamingSubsystem.cpp:184
void Start(ELevelStreamingPhase InPhase, FContextFactory InContextFactory, FOnChainCompleted InOnCompleted, bool bInDebugMode=false)
이펙트 체인 실행을 시작합니다.
Definition EffectChainExecutor.cpp:53
static FLevelStreamingContext CreateContext(TWeakObjectPtr< ULevelStreaming > InOriginalWorld, TWeakObjectPtr< ULevelStreaming > InTargetWorld, const FEffectChainExecutor &Executor)
Definition LevelStreamingContext.cpp:20
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ StartDuringLoadPhase()

void ULevelStreamingSubsystem::StartDuringLoadPhase ( )
private
273{
274 StartChain(ELevelStreamingPhase::DuringLoad);
275
276 const auto Callback = FTickerDelegate::CreateLambda([this](float)
277 {
278 bFakeLoadingDone = true;
280 return false; //연속적으로 호출할 것인지 여부라, False를 반환하면 한 번만 호출함.
281 });
282
283 if (LevelStreamingData->FakeLoadingTime < KINDA_SMALL_NUMBER)
284 {
285 Callback.Execute(0.0f);
286 }
287 else
288 {
289 FakeLoadingTickerHandle = FTSTicker::GetCoreTicker().AddTicker(Callback, LevelStreamingData->FakeLoadingTime);
290 }
291}
FTSTicker::FDelegateHandle FakeLoadingTickerHandle
Definition LevelStreamingSubsystem.h:128
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Tick()

void ULevelStreamingSubsystem::Tick ( float  DeltaTime)
overrideprotectedvirtual
26{
27 ChainExecutor.Tick(DeltaTime);
28}
void Tick(float DeltaTime)
현재 이펙트를 틱합니다. 완료 시 End 이벤트를 호출하고 다음 이펙트로 진행합니다.
Definition EffectChainExecutor.cpp:73
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ AllRegisteredEffects

TArray<TObjectPtr<ULevelStreamingEffect> > ULevelStreamingSubsystem::AllRegisteredEffects
private

◆ bAsyncLoading

bool ULevelStreamingSubsystem::bAsyncLoading = false
private

◆ bDebugMode

bool ULevelStreamingSubsystem::bDebugMode = true

◆ bDuringLoadChainDone

bool ULevelStreamingSubsystem::bDuringLoadChainDone = false
private

◆ bFakeLoadingDone

bool ULevelStreamingSubsystem::bFakeLoadingDone = false
private

◆ bIsLevelLoadRequested

bool ULevelStreamingSubsystem::bIsLevelLoadRequested = false
private

◆ bLevelLoadDone

bool ULevelStreamingSubsystem::bLevelLoadDone = false
private

◆ BundleRegistry

TObjectPtr<UDataBundleRegistry> ULevelStreamingSubsystem::BundleRegistry
private

◆ ChainExecutor

FEffectChainExecutor ULevelStreamingSubsystem::ChainExecutor
private

◆ FakeLoadingTickerHandle

FTSTicker::FDelegateHandle ULevelStreamingSubsystem::FakeLoadingTickerHandle
private

◆ LevelStreamingData

TObjectPtr<ULevelStreamingData> ULevelStreamingSubsystem::LevelStreamingData
private

◆ LevelStreamingDeque

FLevelStreamingDeque ULevelStreamingSubsystem::LevelStreamingDeque
private

◆ LevelToLoad

TWeakObjectPtr<ULevelStreaming> ULevelStreamingSubsystem::LevelToLoad
private

◆ LevelToUnload

TWeakObjectPtr<ULevelStreaming> ULevelStreamingSubsystem::LevelToUnload
private

◆ OnLevelLoadCompleted

FOnLevelLoadCompleted ULevelStreamingSubsystem::OnLevelLoadCompleted

◆ OnLevelLoadedInMemory

FOnLevelLoadedInMemory ULevelStreamingSubsystem::OnLevelLoadedInMemory

◆ OnPlacePlayerTheWorld

FOnPlacePlayerTheWorld ULevelStreamingSubsystem::OnPlacePlayerTheWorld

◆ StreamingWindowSize

int32 ULevelStreamingSubsystem::StreamingWindowSize = 3

이 클래스에 대한 문서화 페이지는 다음의 파일들로부터 생성되었습니다.: