141{
143
144 if (OwnerSubsystem == nullptr)
145 {
146 return;
147 }
148
149 UWorld* World = OwnerSubsystem->GetWorld();
150
151 if (World ==
nullptr || World->IsGameWorld() ==
false || OwnerSubsystem->
CachedStageDictionary ==
nullptr)
152 {
153 return;
154 }
155
157 {
158 return;
159 }
160
161 if (World->HasBegunPlay() == false)
162 {
164 {
165 return;
166 }
167
169 auto WaitDelegate = FTickerDelegate::CreateRaw(this, FunctionPtr);
171 return;
172 }
173
175 {
176 LOG_ERROR(LogCKLevel,
"LevelStreamingStateMachine is not in idle state.");
177 return;
178 }
179
181 {
184 }
185
187
188 if (CurrentStageData == nullptr)
189 {
191 return;
192 }
193
196
197 ULevelStreaming* StreamingLevel = OwnerSubsystem->
LevelToLoad.Get();
198
199 if (StreamingLevel == nullptr)
200 {
203 }
204
205 ULevel* TargetLoadedLevel;
206
208 {
209 TargetLoadedLevel = StreamingLevel->GetLoadedLevel();
210 }
211 else
212 {
213 TargetLoadedLevel = World->GetCurrentLevel();
214 }
215
217
218 if (CurrentFlowDefinition)
219 {
220 CurrentFlowDefinition->
OnLevelLoaded(TargetLoadedLevel, CurrentStageData);
221 }
222 else
223 {
225 }
226
228 {
230 });
231
233
234
235
236
237 if (CurrentFlowDefinition != nullptr)
238 {
240 }
241 else
242 {
244 }
245
247 {
249 });
250
252 {
254 }
255
257 {
258 PlayerManagement->HandlePlayerSpawn(World->GetFirstPlayerController());
259 }
260
261
263}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF(Type)
Definition CK_UE.h:30
Definition StageFlowDefinition.h:27
virtual void OnLevelLoaded(ULevel *NewLevel, const ULevelStreamingData *LevelStreamingData) final
Definition StageFlowDefinition.cpp:56
static AUStageFlowDefinition * GetStageFlowDefinition(const ULevel *CurrentLoadedLevel, ULevelStreamingData *Data)
Definition StageFlowDefinition.cpp:15
virtual void OnLevelStreamingEnded() final
Definition StageFlowDefinition.cpp:146
Definition StreamingEventListenerInterface.h:23
virtual void OnLevelStreamingEnded()=0
virtual void OnLevelLoaded(ULevel *NewLevel, const ULevelStreamingData *LevelStreamingData)=0
static UPlayerManagementSubsystem * GetPlayerManagementSubsystem(const UObject *WorldContextObject)
Definition CK_BPFunctionLibrary.cpp:86
FPrimaryAssetId TargetMap
Definition LevelStreamingData.h:44
void ForEachSendStreamingEvent(const ULevel *LoadedLevel, const TFunctionRef< void(IStreamingEventListenerInterface &)> &Callback) const
Definition LevelStreamingSubsystem.cpp:556
void PreloadNiagaraEffectsAsync(TWeakObjectPtr< ULevelStreamingData > RequestedStreamingData)
Definition LevelStreamingSubsystem.cpp:608
FORCEINLINE bool IsLaunchedFromPersistentLevel() const
Definition LevelStreamingSubsystem.h:67
FLevelStreamingStateMachine StreamingStateMachine
Definition LevelStreamingSubsystem.h:174
void NotifyLevelLoaded(ULevelStreamingData *StreamingData) const
Definition LevelStreamingSubsystem.cpp:591
FOnLevelLoadCompleted OnLevelLoadCompleted
Definition LevelStreamingSubsystem.h:116
TWeakObjectPtr< ULevelStreaming > LevelToLoad
Definition LevelStreamingSubsystem.h:164
TObjectPtr< ULevelStreamingData > LevelStreamingData
Definition LevelStreamingSubsystem.h:158
Definition PlayerManagementSubsystem.h:42
FORCEINLINE ELevelStreamingFlowState GetState() const
Definition LevelStreamingStateMachine.h:29
ULevelStreamingData * ResolveCurrentStageDataFromWorld() const
Definition LevelStreamingSubsystem.cpp:303
bool OnWaitForPlayTick(float DeltaTime)
Definition LevelStreamingSubsystem.cpp:281
static ULevelStreaming * FindByName(const UWorld *World, FName LevelName)
Definition LevelStreamingSubsystem.cpp:49