35 virtual void UpdateCamera(
float DeltaTime)
override;
36 virtual void ApplyCameraModifiers(
float DeltaTime, FMinimalViewInfo& InOutPOV)
override;
38 void NotifyHitConfirmed();
39 void AddPostProcessBlend(
const FPostProcessSettings& InSettings,
float InWeight);
40 void SetHitStopActive(
bool bActive);
43 UFUNCTION(BlueprintCallable, Category =
"Camera|Sequence")
44 void PlayCameraEffectSequence(
ACameraEffector* Effector, UTemplateSequence* Sequence =
nullptr);
46 UFUNCTION(BlueprintCallable, Category =
"Camera|Sequence")
47 void StopCameraEffectSequence();
49 UFUNCTION(BlueprintPure, Category =
"Camera|Sequence")
50 bool IsPlayingSequence()
const;
52 UFUNCTION(BlueprintCallable, Category =
"Camera|LockOn")
55 UFUNCTION(BlueprintPure, Category =
"Camera|LockOn")
56 bool IsLockingOn()
const;
58 UFUNCTION(BlueprintPure, Category =
"Camera|LockOn")
59 TScriptInterface<ITargetableInterface> GetLockOnTarget();
61 UFUNCTION(BlueprintPure, Category =
"Camera")
62 APawn* GetCameraSubjectPawn()
const;
64 UFUNCTION(BlueprintPure, Category =
"Camera")
65 FRotator GetMovementInputRotation()
const;
67 bool ShouldStopCameraMovement()
const;
68 bool ShouldStopCameraRotation()
const;
73 return LastHitConfirmedTime;
76 UFUNCTION(BlueprintPure, Category =
"Camera")
77 FORCEINLINE UCameraZoomComponent* GetCameraZoomComponent()
const
79 return CameraZoomComponent;
82 UFUNCTION(BlueprintPure, Category =
"Camera")
83 FORCEINLINE UCameraTargetingComponent* GetPlayerTargetingComponent()
const
85 return PlayerTargetingComponent;
88 UFUNCTION(BlueprintPure, Category =
"Camera")
89 FORCEINLINE UCameraBehaviorComponent* GetCameraBehaviorComponent()
const
91 return CameraBehaviorComponent;
94 UFUNCTION(BlueprintPure, Category =
"Camera")
95 FORCEINLINE APlayerController* GetCameraOwnerController()
const
100 UFUNCTION(BlueprintPure, Category =
"Camera")
101 FORCEINLINE UCameraCollisionComponent* GetCameraCollisionComponent()
const
103 return CameraCollisionComponent;
106 UFUNCTION(BlueprintPure, Category =
"Camera")
107 FORCEINLINE UCameraPostProcessComponent* GetCameraPostProcessComponent()
const
109 return CameraPostProcessComponent;
114 void OnSequenceFinished();
117 void ExecutePendingPlay();
120 void StartPlaySequence(
ACameraEffector* Effector, UTemplateSequence* TargetSequence);
121 void UpdateSequencerTimeDilationCompensation();
125 bool IsCinematicViewTarget() const;
128 void ReleaseTimeScaleRequest();
131 UPROPERTY(BlueprintReadOnly, Category = "Camera|Sequence")
132 TObjectPtr<UTemplateSequence> CameraEffectSequence;
134 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Sequence")
135 FMovieSceneSequencePlaybackSettings SequencePlaybackSettings;
139 UPROPERTY(EditDefaultsOnly, Category = "Camera|Distance", meta = (ClampMin = "0.0"))
140 float BaseDistance = 500.0f;
142 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
143 float PositionBlendSeconds = 0.1f;
145 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
146 float RotationBlendSeconds = 0.1f;
148 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
149 float FOVBlendSeconds = 0.1f;
151 UPROPERTY(EditDefaultsOnly, Category = "Camera|Blend", meta = (ClampMin = "0.0", UIMax = "2.0"))
152 float TimeScaleBlendSeconds = 0.1f;
155 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera", meta = (ClampMin = "0.0"))
156 float LocationLagStrength = 0.35f;
158 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera")
159 bool bApplyCameraRotationLag = false;
163 TObjectPtr<UTemplateSequencePlayer> PreviousSequencerPlayer;
166 TWeakObjectPtr<ATemplateSequenceActor> PreviousSequenceActor;
170 TObjectPtr<UTemplateSequencePlayer> SequencePlayer;
173 TWeakObjectPtr<ATemplateSequenceActor> SequenceActor;
182 TWeakObjectPtr<UTemplateSequence> PendingSequence;
187 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
188 TObjectPtr<UCameraZoomComponent> CameraZoomComponent;
190 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
191 TObjectPtr<UCameraTargetingComponent> PlayerTargetingComponent;
193 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
194 TObjectPtr<UCameraBehaviorComponent> CameraBehaviorComponent;
196 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
197 TObjectPtr<UCameraCollisionComponent> CameraCollisionComponent;
199 UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = "Camera|Components", meta = (AllowPrivateAccess = "true"))
200 TObjectPtr<UCameraPostProcessComponent> CameraPostProcessComponent;
203 double LastHitConfirmedTime = -1.0;
205 bool bHasPendingPlay = false;
206 bool bHitStopActive = false;