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

#include <CameraTargetFocusProcessor.h>

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

Public 멤버 함수

void Configure (const FVector &InFocusOffset, const FRotator &InRotationOffset, float InRotationDuration)
 
- UCameraEffectProcessor(으)로부터 상속된 Public 멤버 함수
void Initialize (const FCameraEffect &CameraEffect, APlayerController *PC)
 
void Deinitialize (const FCameraEffect &CameraEffect, APlayerController *PC)
 
void Start (const FCameraEffect &CameraEffect, APlayerController *PC)
 
bool Update (const FCameraEffect &CameraEffect, APlayerController *PC)
 
void End (const FCameraEffect &CameraEffect, APlayerController *PC)
 
FORCEINLINE ECameraEffectProcessorState GetCurrentState () const
 
FORCEINLINE int32 GetActivatedTickCount () const
 
FORCEINLINE void ResetActivatedTickCount ()
 

Protected 멤버 함수

virtual void OnStart (const FCameraEffect &CameraEffect, APlayerController *PC) override
 
virtual void OnUpdate (const FCameraEffect &CameraEffect, APlayerController *PC) override
 
virtual void OnEnd (const FCameraEffect &CameraEffect, APlayerController *PC) override
 
- UCameraEffectProcessor(으)로부터 상속된 Protected 멤버 함수
virtual void OnInitialize (const FCameraEffect &CameraEffect, APlayerController *PC)
 
virtual void OnDeinitialize (const FCameraEffect &CameraEffect, APlayerController *PC)
 

Private 멤버 함수

FRotator CalculateDesiredRotation (APlayerController *PC, const FVector &FocusLocation) const
 

Private 속성

FVector FocusOffset = FVector::ZeroVector
 
FRotator RotationOffset = FRotator::ZeroRotator
 
float RotationDuration = 0.35f
 
FVector StartRuntimeRotationOffset = FVector::ZeroVector
 
float StartRealTime = 0.0f
 

멤버 함수 문서화

◆ CalculateDesiredRotation()

FRotator UCameraTargetFocusProcessor::CalculateDesiredRotation ( APlayerController *  PC,
const FVector &  FocusLocation 
) const
private
81{
82 if (PC == nullptr || PC->PlayerCameraManager == nullptr)
83 {
84 return FRotator::ZeroRotator;
85 }
86
87 const FVector ToFocus = FocusLocation - PC->PlayerCameraManager->GetCameraLocation();
88
89 if (ToFocus.IsNearlyZero())
90 {
91 return PC->PlayerCameraManager->GetCameraRotation();
92 }
93
94 FRotator DesiredRotation = ToFocus.Rotation();
95 DesiredRotation.Roll = 0.0f;
96 DesiredRotation += RotationOffset;
97 DesiredRotation.Normalize();
98 return DesiredRotation;
99}
FRotator RotationOffset
Definition CameraTargetFocusProcessor.h:31
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ Configure()

void UCameraTargetFocusProcessor::Configure ( const FVector &  InFocusOffset,
const FRotator &  InRotationOffset,
float  InRotationDuration 
)
13{
14 FocusOffset = InFocusOffset;
15 RotationOffset = InRotationOffset;
16 RotationDuration = FMath::Max(InRotationDuration, 0.0f);
17}
float RotationDuration
Definition CameraTargetFocusProcessor.h:34
FVector FocusOffset
Definition CameraTargetFocusProcessor.h:28
이 함수를 호출하는 함수들에 대한 그래프입니다.:

◆ OnEnd()

void UCameraTargetFocusProcessor::OnEnd ( const FCameraEffect CameraEffect,
APlayerController *  PC 
)
overrideprotectedvirtual

UCameraEffectProcessor(으)로부터 재구현되었습니다.

70{
71 Super::OnEnd(CameraEffect, PC);
72
73 if (ACameraEffector* Effector = Cast<ACameraEffector>(GetOuter()))
74 {
75 Effector->ClearRuntimeRotationOffset();
76 }
77}
Definition CameraEffector.h:40

◆ OnStart()

void UCameraTargetFocusProcessor::OnStart ( const FCameraEffect CameraEffect,
APlayerController *  PC 
)
overrideprotectedvirtual

UCameraEffectProcessor(으)로부터 재구현되었습니다.

21{
22 Super::OnStart(CameraEffect, PC);
23
24 StartRealTime = PC && PC->GetWorld() ? PC->GetWorld()->GetRealTimeSeconds() : 0.0f;
25
26 if (ACameraEffector* Effector = Cast<ACameraEffector>(GetOuter()))
27 {
28 StartRuntimeRotationOffset = Effector->GetRuntimeRotationOffset();
29 }
30}
FVector StartRuntimeRotationOffset
Definition CameraTargetFocusProcessor.h:37
float StartRealTime
Definition CameraTargetFocusProcessor.h:38

◆ OnUpdate()

void UCameraTargetFocusProcessor::OnUpdate ( const FCameraEffect CameraEffect,
APlayerController *  PC 
)
overrideprotectedvirtual

UCameraEffectProcessor(으)로부터 재구현되었습니다.

34{
35 Super::OnUpdate(CameraEffect, PC);
36
37 ACameraEffector* Effector = Cast<ACameraEffector>(GetOuter());
38
39 if (Effector == nullptr || PC == nullptr || PC->PlayerCameraManager == nullptr)
40 {
41 return;
42 }
43
44 const AActor* FocusTargetActor = Effector->GetFocusTargetActor();
45
46 if (FocusTargetActor == nullptr)
47 {
48 return;
49 }
50
51 const FVector FocusLocation = FocusTargetActor->GetActorLocation() + FocusOffset;
52 const FRotator DesiredRotation = CalculateDesiredRotation(PC, FocusLocation);
53 const FRotator CurrentRotation = PC->PlayerCameraManager->GetCameraRotation();
54 const FRotator SequencerRotation(Effector->Rotation.Y, Effector->Rotation.Z, Effector->Rotation.X);
55 const FRotator RequiredRuntimeRotation = (DesiredRotation - CurrentRotation - SequencerRotation).GetNormalized();
56 const FVector TargetRuntimeRotationOffset(RequiredRuntimeRotation.Roll, RequiredRuntimeRotation.Pitch, RequiredRuntimeRotation.Yaw);
57
58 float Alpha = 1.0f;
59
60 if (RotationDuration > KINDA_SMALL_NUMBER && PC->GetWorld())
61 {
62 Alpha = FMath::Clamp((PC->GetWorld()->GetRealTimeSeconds() - StartRealTime) / RotationDuration, 0.0f, 1.0f);
63 }
64
65 Effector->SetRuntimeRotationOffset(FMath::Lerp(StartRuntimeRotationOffset, TargetRuntimeRotationOffset, Alpha));
66}
void SetRuntimeRotationOffset(const FVector &InRuntimeRotationOffset)
Definition CameraEffector.cpp:24
FVector Rotation
Definition CameraEffector.h:79
AActor * GetFocusTargetActor() const
Definition CameraEffector.cpp:42
FRotator CalculateDesiredRotation(APlayerController *PC, const FVector &FocusLocation) const
Definition CameraTargetFocusProcessor.cpp:80
이 함수 내부에서 호출하는 함수들에 대한 그래프입니다.:

멤버 데이터 문서화

◆ FocusOffset

FVector UCameraTargetFocusProcessor::FocusOffset = FVector::ZeroVector
private

◆ RotationDuration

float UCameraTargetFocusProcessor::RotationDuration = 0.35f
private

◆ RotationOffset

FRotator UCameraTargetFocusProcessor::RotationOffset = FRotator::ZeroRotator
private

◆ StartRealTime

float UCameraTargetFocusProcessor::StartRealTime = 0.0f
private

◆ StartRuntimeRotationOffset

FVector UCameraTargetFocusProcessor::StartRuntimeRotationOffset = FVector::ZeroVector
private

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