Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
LevelStreamingEffect.h
이 파일의 문서화 페이지로 가기
1// Fill out your copyright notice in the Description page of Project Settings.
2
3#pragma once
4
5#include "CoreMinimal.h"
6#include "Engine/DataAsset.h"
9#include "LevelStreamingEffect.generated.h"
10
13
14
23{
26
28 using FOnChainCompleted = TFunction<void(ELevelStreamingPhase)>;
29
38 void SetupEffects(const TArray<ULevelStreamingEffect*>& AllEffects);
39
43 void ClearEffects();
44
56 void Start(ELevelStreamingPhase InPhase, FContextFactory InContextFactory, FOnChainCompleted InOnCompleted, bool bInDebugMode = false);
57
63 void Tick(float DeltaTime);
64
66 bool IsActive() const
67 {
68 return bActive;
69 }
70
73 {
74 return Phase;
75 }
76
78 int32 GetChainIndex() const
79 {
80 return ChainIndex;
81 }
82
83private:
89 void Process();
90
91private:
93 TMap<ELevelStreamingPhase, TArray<ULevelStreamingEffect*>> PhaseChains;
94
96 TArray<ULevelStreamingEffect*> Chain;
97
99 int32 ChainIndex = 0;
100
102 ELevelStreamingPhase Phase = ELevelStreamingPhase::None;
103
106
109
111 bool bActive = false;
112
114 bool bDebugMode = false;
115};
116
117
118
119UCLASS(Abstract)
120class CK_UE_API ULevelStreamingEffect : public UObject
121{
122 GENERATED_BODY()
123
124public:
125 //이펙트 활성화 직전 상태 초기화 (LevelStreamer가 호출)
126 virtual void InitEffect() { }
127
128 //인자로 전달된 페이즈로 설정된 이펙트들이 모두 완료됐을 때 호출됨.
129 //Ex) PreLoad에 호출되는 이펙트 N개가 있다면 N개 이펙트의 PreLoad가 모두 호출된 이후에 해당 함수가 호출됨.
130 virtual void OnCompletedEffectsByPhase(const ELevelStreamingPhase CompletedPhase) { }
131
132
133public:
134 // Phase에 맞는 인터페이스로 Update를 디스패치하고 결과를 반환합니다.
135 virtual void ExecuteUpdate(ELevelStreamingPhase Phase, const FLevelStreamingContext& Context);
136
137 virtual void CallPrepareOrFinishEvent(ELevelStreamingPhase Phase, ELevelStreamingEffectCallType CallType, const FLevelStreamingContext& Context);
138
139
140public:
142 {
143 return LastExecutionResult;
144 }
145
146 FORCEINLINE bool IsSkipThisEffect() const
147 {
148 return bSkipThisEffect;
149 }
150
151
152protected:
153 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "LevelLoadEffect")
154 bool bSkipThisEffect = false;
155
156 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "LevelLoadEffect")
158};
ELevelStreamingEffectCallType
Definition ELevelStreamingEnums.h:41
ELevelStreamingEffectResult
Definition ELevelStreamingEnums.h:24
ELevelStreamingPhase
Definition ELevelStreamingEnums.h:7
static constexpr FGlobalUserSettingsRuntime None
Definition GlobalUserSettingsRuntime.cpp:6
Definition LevelStreamingEffect.h:121
FORCEINLINE bool IsSkipThisEffect() const
Definition LevelStreamingEffect.h:146
FORCEINLINE ELevelStreamingEffectResult GetLastExecutionResult() const
Definition LevelStreamingEffect.h:141
virtual void InitEffect()
Definition LevelStreamingEffect.h:126
virtual void OnCompletedEffectsByPhase(const ELevelStreamingPhase CompletedPhase)
Definition LevelStreamingEffect.h:130
레벨 스트리밍 이펙트 체인의 순차 실행을 담당합니다.
Definition LevelStreamingEffect.h:23
TFunction< void(ELevelStreamingPhase)> FOnChainCompleted
체인 완료 시 완료된 Phase를 인자로 호출되는 콜백 타입.
Definition LevelStreamingEffect.h:28
FContextFactory ContextFactory
매 틱마다 컨텍스트를 생성하는 팩토리 함수.
Definition LevelStreamingEffect.h:105
FOnChainCompleted OnCompleted
체인 완료 시 호출될 콜백.
Definition LevelStreamingEffect.h:108
TFunction< FLevelStreamingContext()> FContextFactory
매 틱마다 FLevelStreamingContext를 생성하는 팩토리 타입.
Definition LevelStreamingEffect.h:25
bool bActive
체인 실행 중 여부.
Definition LevelStreamingEffect.h:111
void Tick(float DeltaTime)
현재 이펙트를 틱합니다. 완료 시 End 이벤트를 호출하고 다음 이펙트로 진행합니다.
Definition LevelStreamingEffect.cpp:71
bool bDebugMode
디버그 로그 출력 여부.
Definition LevelStreamingEffect.h:114
int32 GetChainIndex() const
현재 ChainIndex를 반환합니다.
Definition LevelStreamingEffect.h:78
void Start(ELevelStreamingPhase InPhase, FContextFactory InContextFactory, FOnChainCompleted InOnCompleted, bool bInDebugMode=false)
이펙트 체인 실행을 시작합니다.
Definition LevelStreamingEffect.cpp:49
bool IsActive() const
체인이 현재 실행 중인지 여부를 반환합니다.
Definition LevelStreamingEffect.h:66
TArray< ULevelStreamingEffect * > Chain
현재 실행 중인 이펙트 목록. Start 시 PhaseChains에서 복사됩니다.
Definition LevelStreamingEffect.h:96
TMap< ELevelStreamingPhase, TArray< ULevelStreamingEffect * > > PhaseChains
Phase별로 분류된 이펙트 체인 맵. SetupEffects 호출 시 구성됩니다.
Definition LevelStreamingEffect.h:93
void Process()
다음 실행 대상 이펙트를 결정하고 Start 이벤트를 호출하거나 완료 처리합니다.
Definition LevelStreamingEffect.cpp:95
ELevelStreamingPhase GetPhase() const
현재 Phase를 반환합니다.
Definition LevelStreamingEffect.h:72
void SetupEffects(const TArray< ULevelStreamingEffect * > &AllEffects)
이펙트 목록을 Phase별로 분류해 내부 체인 맵을 구성합니다.
Definition LevelStreamingEffect.cpp:9
int32 ChainIndex
현재 실행 중인 이펙트의 인덱스.
Definition LevelStreamingEffect.h:99
ELevelStreamingPhase Phase
현재 Phase.
Definition LevelStreamingEffect.h:102
void ClearEffects()
내부 Phase 체인 맵과 현재 실행 체인을 모두 초기화합니다.
Definition LevelStreamingEffect.cpp:42
Definition LevelStreamingContext.h:16