Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
CameraBehaviorComponent.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 "Components/ActorComponent.h"
9#include "CameraBehaviorComponent.generated.h"
10
11class UCameraTargetingComponent;
12class APawn;
13struct FGameplayTag;
14
15
16UENUM(BlueprintType)
17enum class ECameraBehaviorMode : uint8
18{
21 Aiming
22};
23
24UENUM(BlueprintType)
25enum class ECameraGait : uint8
26{
27 Walking,
29};
30
31USTRUCT(BlueprintType)
33{
34 GENERATED_BODY()
35
36public:
37 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Behavior", meta = (ClampMin = "0.0"))
38 FVector LocationLagSeconds = FVector(0.067f, 0.067f, 0.067f);
39
40 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Behavior", meta = (ClampMin = "0.0"))
41 FVector RotationLagSeconds = FVector(0.05f, 0.05f, 0.05f);
42
43 UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = "Camera|Behavior")
44 float PlayerRotationLagSeconds = 0.15f;
45};
46
47
48UCLASS(ClassGroup=(Camera), meta=(BlueprintSpawnableComponent))
49class CK_UE_API UCameraBehaviorComponent : public UActorComponent, public ICameraBehaviorInterface
50{
51 GENERATED_BODY()
52
53public:
54 UCameraBehaviorComponent();
55
56public:
57 virtual void BeginPlay() override;
58 virtual void UpdateCameraBehavior(AGameCameraManager* CameraManager, float DeltaTime) override;
59
60 bool IsCameraLockingOn(const AGameCameraManager* CameraManager) const;
61 bool IsActivatedCorrection(const UCameraBehaviorComponent* BehaviorComponent, APawn*& OwnerPawn);
62 FRotator CalculateFinalCameraRotation(const AGameCameraManager* CameraManager, float DeltaTime, const FVector& TargetRotationLagSeconds, const FRotator& BaseCameraRotation) const;
63
64 APawn* GetCameraOwnerPawn() const;
65 AActor* GetCameraSubjectActor() const;
66 UCameraTargetingComponent* GetTargetingComponent() const;
67
68public:
69 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
70 FVector GetLocalOffset() const;
71
72 UFUNCTION(Blueprintable)
73 void ResetCameraCorrection();
74
75public:
76 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
77 FORCEINLINE bool ShouldApplyCameraCorrection() const
78 {
79 return bUseCameraCorrection && GetCameraSubjectActor() != nullptr;
80 }
81
82 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
83 FORCEINLINE FVector GetGlobalOffset() const
84 {
85 return CameraGlobalOffset;
86 }
87
88 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
89 FORCEINLINE FVector GetPivotLagSeconds() const
90 {
91 return CameraBehavior.LocationLagSeconds;
92 }
93
94 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
95 FORCEINLINE FVector GetRotationLagSeconds() const
96 {
97 return CameraBehavior.RotationLagSeconds;
98 }
99
100 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
101 FORCEINLINE FRotator GetSmoothPlayerRotation() const
102 {
103 return PlayerSmoothedRotation;
104 }
105
106 UFUNCTION(BlueprintPure, Category = "Camera|Behavior")
107 FORCEINLINE FVector2D GetMouseSensitivity() const
108 {
110 return FVector2D(UserSettings.MouseXSensitivity, UserSettings.bInvertYAxis ? -UserSettings.MouseYSensitivity : UserSettings.MouseYSensitivity);
111 }
112
113private:
114 bool HasSubjectGameplayTag(FGameplayTag Tag) const;
115
116protected:
117 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior")
118 bool bUseCameraCorrection = true;
119
120 //Base Distance에 포함되지 않는 별도의 Pivot Offset
121 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior")
122 FVector CameraGlobalOffset = FVector(0.0f, 0.0f, 60.0f);
123
124 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior")
125 FVector CameraLocalOffset = FVector::ZeroVector;
126
127 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior")
128 float CameraMinFOV = 60.0f;
129
130 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior")
131 float CameraMaxFOV = 110.0f;
132
134 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior", meta = (ClampMin = "0.0", ClampMax = "60.0", Units = "deg"))
135 float RunFOVOffset = 5.0f;
136
138 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior", meta = (ClampMin = "0.0", Units = "s"))
139 float RunFOVBlendSeconds = 0.2f;
140
141 UPROPERTY(EditDefaultsOnly, BlueprintReadOnly, Category = "Camera|Behavior")
142 FCameraBehaviorValues CameraBehavior;
143
144private:
145 bool bHasCameraCorrection = false;
146 bool bMovementStopped = false;
147 bool bRotationStopped = false;
148
149 FVector FrozenPivotLocation = FVector::ZeroVector;
150 FVector LastEffectivePivotLocation = FVector::ZeroVector;
151 FRotator FrozenCameraRotation = FRotator::ZeroRotator;
152 FRotator LastFinalCameraRotation = FRotator::ZeroRotator;
153
154 FRotator PlayerSmoothedRotation = FRotator::ZeroRotator;
155 FRotator CamSmoothedRotation = FRotator::ZeroRotator;
156 FVector CamSmoothedPivotLocation = FVector::ZeroVector;
157 float CurrentRunFOVOffset = 0.0f;
158};
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