Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
GameCameraManager.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 "MovieSceneSequencePlaybackSettings.h"
7#include "Camera/PlayerCameraManager.h"
9#include "GameCameraManager.generated.h"
10
11class UCameraCollisionComponent;
12class UCameraPostProcessComponent;
13class ACameraEffector;
15class UTemplateSequence;
16class UTemplateSequencePlayer;
17class ATemplateSequenceActor;
19class UCameraBehaviorComponent;
20class UCameraZoomComponent;
21class UCameraTargetingComponent;
22class APlayerController;
23class APawn;
24
25
26UCLASS(Blueprintable, BlueprintType)
27class CK_UE_API AGameCameraManager : public APlayerCameraManager
28{
29 GENERATED_BODY()
30
31public:
33
34public:
35 virtual void UpdateCamera(float DeltaTime) override;
36 virtual void ApplyCameraModifiers(float DeltaTime, FMinimalViewInfo& InOutPOV) override;
37
38 void NotifyHitConfirmed();
39 void AddPostProcessBlend(const FPostProcessSettings& InSettings, float InWeight);
40 void SetHitStopActive(bool bActive);
41
42public:
43 UFUNCTION(BlueprintCallable, Category = "Camera|Sequence")
44 void PlayCameraEffectSequence(ACameraEffector* Effector, UTemplateSequence* Sequence = nullptr);
45
46 UFUNCTION(BlueprintCallable, Category = "Camera|Sequence")
47 void StopCameraEffectSequence();
48
49 UFUNCTION(BlueprintPure, Category = "Camera|Sequence")
50 bool IsPlayingSequence() const;
51
52 UFUNCTION(BlueprintCallable, Category = "Camera|LockOn")
53 void ReleaseLockOn();
54
55 UFUNCTION(BlueprintPure, Category = "Camera|LockOn")
56 bool IsLockingOn() const;
57
58 UFUNCTION(BlueprintPure, Category = "Camera|LockOn")
59 TScriptInterface<ITargetableInterface> GetLockOnTarget();
60
61 UFUNCTION(BlueprintPure, Category = "Camera")
62 APawn* GetCameraSubjectPawn() const;
63
64 UFUNCTION(BlueprintPure, Category = "Camera")
65 FRotator GetMovementInputRotation() const;
66
67 bool ShouldStopCameraMovement() const;
68 bool ShouldStopCameraRotation() const;
69
70public:
71 FORCEINLINE double GetLastHitConfirmedTime() const
72 {
73 return LastHitConfirmedTime;
74 }
75
76 UFUNCTION(BlueprintPure, Category = "Camera")
77 FORCEINLINE UCameraZoomComponent* GetCameraZoomComponent() const
78 {
79 return CameraZoomComponent;
80 }
81
82 UFUNCTION(BlueprintPure, Category = "Camera")
83 FORCEINLINE UCameraTargetingComponent* GetPlayerTargetingComponent() const
84 {
85 return PlayerTargetingComponent;
86 }
87
88 UFUNCTION(BlueprintPure, Category = "Camera")
89 FORCEINLINE UCameraBehaviorComponent* GetCameraBehaviorComponent() const
90 {
91 return CameraBehaviorComponent;
92 }
93
94 UFUNCTION(BlueprintPure, Category = "Camera")
95 FORCEINLINE APlayerController* GetCameraOwnerController() const
96 {
97 return PCOwner;
98 }
99
100 UFUNCTION(BlueprintPure, Category = "Camera")
101 FORCEINLINE UCameraCollisionComponent* GetCameraCollisionComponent() const
102 {
103 return CameraCollisionComponent;
104 }
105
106 UFUNCTION(BlueprintPure, Category = "Camera")
107 FORCEINLINE UCameraPostProcessComponent* GetCameraPostProcessComponent() const
108 {
109 return CameraPostProcessComponent;
110 }
111
112private:
113 UFUNCTION()
114 void OnSequenceFinished();
115
116 UFUNCTION()
117 void ExecutePendingPlay();
118
119private:
120 void StartPlaySequence(ACameraEffector* Effector, UTemplateSequence* TargetSequence);
121 void UpdateSequencerTimeDilationCompensation();
122
123 // ViewTarget 이 시네마틱 카메라/시퀀스 액터이거나 PlayerController 가 CinematicMode 면 true.
124 // true 일 때는 커스텀 카메라 로직을 건너뛰고 엔진 기본 처리에 맡겨, 시퀀스 카메라컷이 정상 동작하도록 한다.
125 bool IsCinematicViewTarget() const;
126
127 // 카메라 이펙트가 잡고 있던 시간 배율 요청을 반납한다.
128 void ReleaseTimeScaleRequest();
129
130public:
131 UPROPERTY(BlueprintReadOnly, Category = "Camera|Sequence")
132 TObjectPtr<UTemplateSequence> CameraEffectSequence;
133
134 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Sequence")
135 FMovieSceneSequencePlaybackSettings SequencePlaybackSettings;
136
137public:
139 UPROPERTY(EditDefaultsOnly, Category = "Camera|Distance", meta = (ClampMin = "0.0"))
140 float BaseDistance = 500.0f;
141
142 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
143 float PositionBlendSeconds = 0.1f;
144
145 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
146 float RotationBlendSeconds = 0.1f;
147
148 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
149 float FOVBlendSeconds = 0.1f;
150
151 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
152 float TimeScaleBlendSeconds = 0.1f;
153
154public:
155 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera", meta = (ClampMin = "0.0"))
156 float LocationLagStrength = 0.35f;
157
158 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera")
159 bool bApplyCameraRotationLag = false;
160
161private:
162 UPROPERTY()
163 TObjectPtr<UTemplateSequencePlayer> PreviousSequencerPlayer;
164
165 UPROPERTY()
166 TWeakObjectPtr<ATemplateSequenceActor> PreviousSequenceActor;
167
168private:
169 UPROPERTY()
170 TObjectPtr<UTemplateSequencePlayer> SequencePlayer;
171
172 UPROPERTY()
173 TWeakObjectPtr<ATemplateSequenceActor> SequenceActor;
174
175 UPROPERTY()
176 TWeakObjectPtr<ACameraEffector> BoundEffector;
177
178 UPROPERTY()
179 TWeakObjectPtr<ACameraEffector> PendingEffector;
180
181 UPROPERTY()
182 TWeakObjectPtr<UTemplateSequence> PendingSequence;
183
184 UPROPERTY()
185 TObjectPtr<UCameraMotionBlender> Blender;
186
187 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
188 TObjectPtr<UCameraZoomComponent> CameraZoomComponent;
189
190 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
191 TObjectPtr<UCameraTargetingComponent> PlayerTargetingComponent;
192
193 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
194 TObjectPtr<UCameraBehaviorComponent> CameraBehaviorComponent;
195
196 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
197 TObjectPtr<UCameraCollisionComponent> CameraCollisionComponent;
198
199 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
200 TObjectPtr<UCameraPostProcessComponent> CameraPostProcessComponent;
201
202private:
203 double LastHitConfirmedTime = -1.0;
204
205 bool bHasPendingPlay = false;
206 bool bHitStopActive = false;
207};
Definition CameraEffector.h:40
Definition EnemyCharacterBase.h:49
Definition GameCameraManager.h:28
FORCEINLINE double GetLastHitConfirmedTime() const
Definition GameCameraManager.h:71
Definition CameraMotionBlender.h:12