5#include "CoreMinimal.h"
6#include "Components/ActorComponent.h"
9#include "CameraBehaviorComponent.generated.h"
11class UCameraTargetingComponent;
37 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category =
"Camera|Behavior", meta = (ClampMin =
"0.0"))
38 FVector LocationLagSeconds = FVector(0.067f, 0.067f, 0.067f);
40 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Behavior", meta = (ClampMin = "0.0"))
41 FVector RotationLagSeconds = FVector(0.05f, 0.05f, 0.05f);
43 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Behavior")
44 float PlayerRotationLagSeconds = 0.15f;
48UCLASS(ClassGroup=(Camera), meta=(BlueprintSpawnableComponent))
54 UCameraBehaviorComponent();
57 virtual void BeginPlay()
override;
58 virtual void UpdateCameraBehavior(
AGameCameraManager* CameraManager,
float DeltaTime)
override;
61 bool IsActivatedCorrection(
const UCameraBehaviorComponent* BehaviorComponent, APawn*& OwnerPawn);
62 FRotator CalculateFinalCameraRotation(
const AGameCameraManager* CameraManager,
float DeltaTime,
const FVector& TargetRotationLagSeconds,
const FRotator& BaseCameraRotation)
const;
64 APawn* GetCameraOwnerPawn()
const;
65 AActor* GetCameraSubjectActor()
const;
66 UCameraTargetingComponent* GetTargetingComponent()
const;
69 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
70 FVector GetLocalOffset()
const;
72 UFUNCTION(Blueprintable)
73 void ResetCameraCorrection();
76 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
77 FORCEINLINE
bool ShouldApplyCameraCorrection()
const
79 return bUseCameraCorrection && GetCameraSubjectActor() !=
nullptr;
82 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
83 FORCEINLINE FVector GetGlobalOffset()
const
85 return CameraGlobalOffset;
88 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
89 FORCEINLINE FVector GetPivotLagSeconds()
const
91 return CameraBehavior.LocationLagSeconds;
94 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
95 FORCEINLINE FVector GetRotationLagSeconds()
const
97 return CameraBehavior.RotationLagSeconds;
100 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
101 FORCEINLINE FRotator GetSmoothPlayerRotation()
const
103 return PlayerSmoothedRotation;
106 UFUNCTION(BlueprintPure, Category =
"Camera|Behavior")
107 FORCEINLINE FVector2D GetMouseSensitivity()
const
114 bool HasSubjectGameplayTag(FGameplayTag Tag)
const;
117 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior")
118 bool bUseCameraCorrection =
true;
121 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior")
122 FVector CameraGlobalOffset = FVector(0.0f, 0.0f, 60.0f);
124 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior")
125 FVector CameraLocalOffset = FVector::ZeroVector;
127 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior")
128 float CameraMinFOV = 60.0f;
130 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior")
131 float CameraMaxFOV = 110.0f;
134 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior", meta = (ClampMin =
"0.0", ClampMax =
"60.0", Units =
"deg"))
135 float RunFOVOffset = 5.0f;
138 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior", meta = (ClampMin =
"0.0", Units =
"s"))
139 float RunFOVBlendSeconds = 0.2f;
141 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category =
"Camera|Behavior")
145 bool bHasCameraCorrection =
false;
146 bool bMovementStopped =
false;
147 bool bRotationStopped =
false;
149 FVector FrozenPivotLocation = FVector::ZeroVector;
150 FVector LastEffectivePivotLocation = FVector::ZeroVector;
151 FRotator FrozenCameraRotation = FRotator::ZeroRotator;
152 FRotator LastFinalCameraRotation = FRotator::ZeroRotator;
154 FRotator PlayerSmoothedRotation = FRotator::ZeroRotator;
155 FRotator CamSmoothedRotation = FRotator::ZeroRotator;
156 FVector CamSmoothedPivotLocation = FVector::ZeroVector;
157 float CurrentRunFOVOffset = 0.0f;
ECameraGait
Definition CameraBehaviorComponent.h:26
ECameraBehaviorMode
Definition CameraBehaviorComponent.h:18
const FGlobalUserSettingsRuntime & GetGlobalUserSettingsRuntime()
Definition GlobalUserSettingsRuntime.cpp:24
Definition GameCameraManager.h:28
Definition CameraBehaviorInterface.h:21
Definition CameraBehaviorComponent.h:33
Definition GlobalUserSettingsRuntime.h:5
bool bInvertYAxis
Definition GlobalUserSettingsRuntime.h:11
float MouseXSensitivity
Definition GlobalUserSettingsRuntime.h:12
float MouseYSensitivity
Definition GlobalUserSettingsRuntime.h:13