Payback 0.0.1
CK Graduation Project
로딩중...
검색중...
일치하는것 없음
CameraTargetingComponent.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 "CK_Definitions.h"
7#include "Components/ActorComponent.h"
10#include "CameraTargetingComponent.generated.h"
11
12class AActor;
13class APlayerController;
14class UCameraZoomComponent;
15class UTargetingComponent;
16
17
18DECLARE_MULTICAST_DELEGATE_OneParam(FOnPlayerTargetingActiveChangedSignature, bool /*bActive*/);
19
20
21UCLASS(ClassGroup=(Combat), meta=(BlueprintSpawnableComponent))
22class CK_UE_API UCameraTargetingComponent : public UActorComponent, public ICameraBehaviorInterface
23{
24 GENERATED_BODY()
25
26public:
27 UCameraTargetingComponent();
28
29public:
30 virtual void BeginPlay() override;
31 virtual void EndPlay(EEndPlayReason::Type EndPlayReason) override;
32 virtual void UpdateCameraBehavior(AGameCameraManager* CameraManager, float DeltaTime) override;
33
34public:
35 UFUNCTION(BlueprintCallable, Category = "Targeting|Input")
36 void BeginTargeting();
37
38 UFUNCTION(BlueprintCallable, Category = "Targeting|Input")
39 void ToggleTargeting();
40
41 UFUNCTION(BlueprintCallable, Category = "Targeting|Input")
42 void CycleTarget(float WheelDelta);
43
44 UFUNCTION(BlueprintCallable, Category = "Targeting")
45 void ReleaseTargeting();
46
47 UFUNCTION(BlueprintCallable, Category = "Targeting")
48 void SetTargetingPrevented(bool bInPrevented);
49
50public:
51 UFUNCTION(BlueprintPure, Category = "Targeting")
52 bool IsTargeting() const;
53
54 UFUNCTION(BlueprintPure, Category = "Targeting")
55 FORCEINLINE bool IsTargetingPrevented() const
56 {
57 return bTargetingPrevented;
58 }
59
60 UFUNCTION(BlueprintPure, Category = "Targeting")
61 bool HasTarget() const;
62
63 UFUNCTION(BlueprintPure, Category = "Targeting")
64 TScriptInterface<ITargetableInterface> GetCurrentTarget() const;
65
66 ITargetableInterface* GetTargetable() const;
67
68 void SetTargetingActor(ITargetableInterface* TargetableActor);
69
70private:
71 void ResetTarget();
72 void UpdateTargetingMarkerByCameraView(AGameCameraManager* CameraManager);
73 void HideLastTargetingMarker();
74 void UpdateCameraToTarget(float DeltaTime);
75 void SetCurrentTarget(ITargetableInterface* NewTarget);
76 bool IsTargetInCameraView(const APlayerController* PC, ITargetableInterface* Targetable) const;
77 float GetTargetDistanceFromOwnerPawn(ITargetableInterface* Targetable) const;
78
79 APlayerController* GetOwnerController() const;
80 UCameraZoomComponent* GetCameraZoomComponent() const;
81 UTargetingComponent* GetTargetingComponent() const;
82 TArray<ITargetableInterface*> FindVisibleTargetingMarkerTargets(const AGameCameraManager* CameraManager) const;
83
84public:
85 FOnPlayerTargetingActiveChangedSignature OnTargetingActiveChanged;
86
87protected:
88 UPROPERTY(EditDefaultsOnly, Category = "Targeting", meta = (ClampMin = "0.0"))
89 float MaxTargetingDistance = CK_Definitions::LOCKABLE_MAX_RANGE;
90
91 UPROPERTY(EditDefaultsOnly, Category = "Targeting", meta = (ClampMin = "0.0", Units = "Seconds"))
92 float CameraInterpTime = 0.15f;
93
94 UPROPERTY(EditDefaultsOnly, Category = "Targeting", meta = (ClampMin = "-89.0", ClampMax = "89.0"))
95 float TargetViewPitchOffset = 15.0f;
96
97 UPROPERTY(EditDefaultsOnly, Category = "Targeting")
98 bool bUseCustomPitchLimitAngle = true;
99
100 UPROPERTY(EditDefaultsOnly, Category = "Targeting", meta = (ClampMin = "0.0", ClampMax = "89.0", EditCondition = "bUseCustomPitchLimitAngle"))
101 float MaxPitchDownAngle = 32.0f;
102
103 UPROPERTY(EditDefaultsOnly, Category = "Targeting", meta = (ClampMin = "0.0"))
104 float WheelCycleThreshold = 0.5f;
105
106private:
107 UPROPERTY(Transient)
108 TWeakObjectPtr<AActor> LastTargetingMarkerActor;
109
110private:
111 float WheelAccumulator = 0.0f;
112 bool bTargetingPrevented = false;
113 bool bWantsTargeting = false;
114};
DECLARE_MULTICAST_DELEGATE_OneParam(FOnPlayerTargetingActiveChangedSignature, bool)
Definition GameCameraManager.h:28
Definition CameraBehaviorInterface.h:21
Definition TargetableInterface.h:20
Definition CK_Definitions.h:4