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

#include <CameraEffector.h>

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

Public 멤버 함수

void ForceEndAllEffects ()
 
FVector GetEffectiveRotation () const
 
FVector GetRuntimeRotationOffset () const
 
void SetRuntimeRotationOffset (const FVector &InRuntimeRotationOffset)
 
void ClearRuntimeRotationOffset ()
 
void SetFocusTargetActor (AActor *InFocusTargetActor)
 
AActor * GetFocusTargetActor () const
 
void ClearFocusTargetActor ()
 
FCameraEffect CreateCameraEffect (int32 SectionID, float StartSeconds, float EndSeconds, const UCameraEffectSource *EffectSource)
 
void OnStartCameraEffects (const int32 SectionID)
 
void OnEndCameraEffects (const int32 SectionID)
 
void OnExecuteCameraEffects (const int32 SectionID)
 
bool OnInitializeCameraEffect (const FCameraEffect &CameraEffect)
 

Public 속성

FVector Position = FVector::ZeroVector
 
FVector Rotation = FVector::ZeroVector
 
float WorldTimeScale = 1.0f
 
float FieldOfViewOffset = 0.0f
 
bool bStopMovement = false
 
bool bStopRotation = false
 

Protected 속성

TMap< int32, FCameraEffectCameraEffectMap
 
TWeakObjectPtr< AGameCameraManagerCameraManager
 

Private 멤버 함수

bool TryGetCameraEffect (const int32 SectionID, OUT FCameraEffect &CameraEffect)
 

Private 속성

FVector RuntimeRotationOffset = FVector::ZeroVector
 
TWeakObjectPtr< AActor > FocusTargetActor
 

멤버 함수 문서화

◆ ClearFocusTargetActor()

void ACameraEffector::ClearFocusTargetActor ( )
49{
50 FocusTargetActor.Reset();
51}
TWeakObjectPtr< AActor > FocusTargetActor
Definition CameraEffector.h:105

◆ ClearRuntimeRotationOffset()

void ACameraEffector::ClearRuntimeRotationOffset ( )
31{
32 RuntimeRotationOffset = FVector::ZeroVector;
33}
FVector RuntimeRotationOffset
Definition CameraEffector.h:102

◆ CreateCameraEffect()

FCameraEffect ACameraEffector::CreateCameraEffect ( int32  SectionID,
float  StartSeconds,
float  EndSeconds,
const UCameraEffectSource EffectSource 
)
55{
56 FCameraEffect CameraEffect;
57
58 CameraEffect.Processor = EffectSource->CreateProcessor(this);
59 CameraEffect.Condition = CopyTemp(EffectSource->Condition);
60 CameraEffect.StartSeconds = StartSeconds;
61 CameraEffect.EndSeconds = EndSeconds;
62 CameraEffect.UniqueID = SectionID;
63
64 return CameraEffect;
65}
TObjectPtr< UCameraEffectSectionCondition > Condition
Definition CameraEffectSource.h:22
virtual UCameraEffectProcessor * CreateProcessor(UObject *Outer) const PURE_VIRTUAL(UCameraEffectSource
Definition CameraEffectSource.h:18
Definition CameraEffector.h:17
float StartSeconds
Definition CameraEffector.h:31
TObjectPtr< UCameraEffectSectionCondition > Condition
Definition CameraEffector.h:25
int32 UniqueID
Definition CameraEffector.h:22
float EndSeconds
Definition CameraEffector.h:34
TObjectPtr< UCameraEffectProcessor > Processor
Definition CameraEffector.h:28

◆ ForceEndAllEffects()

void ACameraEffector::ForceEndAllEffects ( )
69{
70 APlayerController* PC = GetWorld()->GetFirstPlayerController();
71 check(PC);
72
73 for (auto& [SectionID, CameraEffect] : CameraEffectMap)
74 {
75 if (CameraEffect.Processor == nullptr)
76 {
77 continue;
78 }
79
80 const ECameraEffectProcessorState State = CameraEffect.Processor->GetCurrentState();
81
82 bool bSkip = false;
83
85 bSkip |= State == ECameraEffectProcessorState::Ended;
87
88 if (bSkip)
89 {
90 continue;
91 }
92
93 CameraEffect.Processor->End(CameraEffect, PC);
94 CameraEffect.Processor->Deinitialize(CameraEffect, PC);
95
96 const FString Name = CameraEffect.Processor->GetName();
97 LOG_WARNING(LogCK, "[Section %d] %s를 강제로 종료했습니다. ", SectionID, *Name);
98 }
99}
#define LOG_WARNING(Category, Format,...)
Definition CK_UE.h:39
ECameraEffectProcessorState
Definition CameraEffectProcessor.h:14
TMap< int32, FCameraEffect > CameraEffectMap
Definition CameraEffector.h:95

◆ GetEffectiveRotation()

FVector ACameraEffector::GetEffectiveRotation ( ) const
13{
15}
FVector Rotation
Definition CameraEffector.h:79

◆ GetFocusTargetActor()

AActor * ACameraEffector::GetFocusTargetActor ( ) const
43{
44 return FocusTargetActor.Get();
45}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ GetRuntimeRotationOffset()

FVector ACameraEffector::GetRuntimeRotationOffset ( ) const
19{
21}

◆ OnEndCameraEffects()

void ACameraEffector::OnEndCameraEffects ( const int32  SectionID)
173{
174 APlayerController* PC = GetWorld()->GetFirstPlayerController();
175
176 if (PC == nullptr)
177 {
178 LOG_ERROR(LogCK, "%s을 찾을 수 없습니다. ", NAMEOF(APlayerController));
179 return;
180 }
181
182 FCameraEffect CameraEffect;
183
184 const bool bExistEffect = TryGetCameraEffect(SectionID, CameraEffect);
185
186 if (bExistEffect == false)
187 {
188 return;
189 }
190
191 if (CameraEffect.Processor == nullptr)
192 {
193 LOG_ERROR(LogCK, "%s를 찾을 수 없습니다. ", NAMEOF(UCameraEffectProcessor));
194 return;
195 }
196
197 //Initialized 라면 굳이 End를 호출할 필요가 없음.
198 if (CameraEffect.Processor->GetCurrentState() == ECameraEffectProcessorState::BeforeStart)
199 {
200 CameraEffect.Processor->Deinitialize(CameraEffect, PC);
201 return;
202 }
203
204 //Ended가 아니라면 재생되고 있다는 의미이므로 명시적으로 End 호출.
205 if (CameraEffect.Processor->GetCurrentState() != ECameraEffectProcessorState::Ended)
206 {
207 CameraEffect.Processor->End(CameraEffect, PC);
208 }
209
210 CameraEffect.Processor->Deinitialize(CameraEffect, PC);
211}
#define LOG_ERROR(Category, Format,...)
Definition CK_UE.h:40
#define NAMEOF(Type)
Definition CK_UE.h:30
bool TryGetCameraEffect(const int32 SectionID, OUT FCameraEffect &CameraEffect)
Definition CameraEffector.cpp:232
Definition CameraEffectProcessor.h:25
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnExecuteCameraEffects()

void ACameraEffector::OnExecuteCameraEffects ( const int32  SectionID)
142{
143 APlayerController* PC = GetWorld()->GetFirstPlayerController();
144
145 if (PC == nullptr)
146 {
147 LOG_ERROR(LogCK, "%s 을 찾을 수 없습니다. ", NAMEOF(APlayerController));
148 return;
149 }
150
151 FCameraEffect CameraEffect;
152
153 if (TryGetCameraEffect(SectionID, CameraEffect) == false)
154 {
155 LOG_ERROR(LogCK, "섹션 ID '%d'에 등록된 카메라 이펙트를 찾을 수 없습니다. ", SectionID);
156 return;
157 }
158
159 if (CameraEffect.Processor == nullptr)
160 {
161 LOG_ERROR(LogCK, "Processor가 없어, 이펙트를 실행시킬 수 없습니다. ");
162 return;
163 }
164
165 if (CameraEffect.Processor->Update(CameraEffect, PC) == false)
166 {
167 CameraEffect.Processor->ResetActivatedTickCount();
168 }
169}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ OnInitializeCameraEffect()

bool ACameraEffector::OnInitializeCameraEffect ( const FCameraEffect CameraEffect)
215{
216 if (const FCameraEffect* Existing = CameraEffectMap.Find(CameraEffect.UniqueID))
217 {
218 if (Existing->Processor && Existing->Processor->GetCurrentState() != ECameraEffectProcessorState::Ended)
219 {
220 if (APlayerController* PC = GetWorld()->GetFirstPlayerController())
221 {
222 Existing->Processor->End(*Existing, PC);
223 }
224 }
225 }
226
227 CameraEffectMap.Emplace(CameraEffect.UniqueID, CameraEffect);
228 return true;
229}

◆ OnStartCameraEffects()

void ACameraEffector::OnStartCameraEffects ( const int32  SectionID)
103{
104 APlayerController* PC = GetWorld()->GetFirstPlayerController();
105
106 if (PC == nullptr)
107 {
108 LOG_ERROR(LogCK, "%s을 찾을 수 없습니다. ", NAMEOF(APlayerController));
109 return;
110 }
111
112 FCameraEffect CameraEffect;
113
114 const bool bExistEffect = TryGetCameraEffect(SectionID, CameraEffect);
115
116 if (bExistEffect == false)
117 {
118 return;
119 }
120
121 if (CameraEffect.Processor == nullptr)
122 {
123 LOG_ERROR(LogCK, "%s를 찾을 수 없습니다. ", NAMEOF(UCameraEffectProcessor));
124 return;
125 }
126
127 CameraEffect.Processor->Initialize(CameraEffect, PC);
128
129 if (CameraEffect.Condition == nullptr)
130 {
131 //Condition이 없으면 명시적으로 바로 시작해준다.
132 CameraEffect.Processor->Start(CameraEffect, PC);
133 }
134 else
135 {
136 CameraEffect.Condition->Initialize(CameraEffect, PC);
137 }
138}
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

◆ SetFocusTargetActor()

void ACameraEffector::SetFocusTargetActor ( AActor *  InFocusTargetActor)
37{
38 FocusTargetActor = InFocusTargetActor;
39}

◆ SetRuntimeRotationOffset()

void ACameraEffector::SetRuntimeRotationOffset ( const FVector &  InRuntimeRotationOffset)
25{
26 RuntimeRotationOffset = InRuntimeRotationOffset;
27}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ TryGetCameraEffect()

bool ACameraEffector::TryGetCameraEffect ( const int32  SectionID,
OUT FCameraEffect CameraEffect 
)
private
233{
234 if (CameraEffectMap.IsEmpty())
235 {
236 return false;
237 }
238
239 if (CameraEffectMap.Contains(SectionID))
240 {
241 const FCameraEffect* Temp = CameraEffectMap.Find(SectionID);
242 check(Temp);
243 CameraEffect = *Temp;
244 }
245
246 if (CameraEffect.Processor)
247 {
248 return true;
249 }
250 else
251 {
252 return false;
253 }
254}
이 함수를 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ bStopMovement

bool ACameraEffector::bStopMovement = false

◆ bStopRotation

bool ACameraEffector::bStopRotation = false

◆ CameraEffectMap

TMap<int32, FCameraEffect> ACameraEffector::CameraEffectMap
protected

◆ CameraManager

TWeakObjectPtr<AGameCameraManager> ACameraEffector::CameraManager
protected

◆ FieldOfViewOffset

float ACameraEffector::FieldOfViewOffset = 0.0f

◆ FocusTargetActor

TWeakObjectPtr<AActor> ACameraEffector::FocusTargetActor
private

◆ Position

FVector ACameraEffector::Position = FVector::ZeroVector

◆ Rotation

FVector ACameraEffector::Rotation = FVector::ZeroVector

◆ RuntimeRotationOffset

FVector ACameraEffector::RuntimeRotationOffset = FVector::ZeroVector
private

◆ WorldTimeScale

float ACameraEffector::WorldTimeScale = 1.0f

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