5#include "CoreMinimal.h"
7#include "Components/ActorComponent.h"
9#include "CameraZoomComponent.generated.h"
12UCLASS(ClassGroup=(Camera), meta=(BlueprintSpawnableComponent))
18 UCameraZoomComponent();
21 virtual
void BeginPlay() override;
24 virtual
void UpdateCameraBehavior(
AGameCameraManager* CameraManager,
float DeltaTime) override;
26 UFUNCTION(BlueprintCallable, Category = "Camera|Distance")
27 FORCEINLINE
void AdjustDistance(
float WheelDelta)
29 TargetDistance = FMath::Clamp(TargetDistance - WheelDelta * ZoomSpeed, GetZoomMin(), GetZoomMax());
32 UFUNCTION(BlueprintCallable, Category =
"Camera|Distance")
33 FORCEINLINE
void SetTargetDistance(
float NewTargetDistance)
35 TargetDistance = FMath::Clamp(NewTargetDistance, GetZoomMin(), GetZoomMax());
38 UFUNCTION(BlueprintCallable, Category =
"Camera|Distance")
39 FORCEINLINE
void SetTargetDistanceToMax()
41 TargetDistance = GetZoomMax();
44 UFUNCTION(BlueprintPure, Category =
"Camera|Distance")
45 FORCEINLINE
float GetZoomMax()
const
47 return Cast<AGameCameraManager>(GetOwner())->BaseDistance * ZoomMaxRatio;
50 UFUNCTION(BlueprintPure, Category =
"Camera|Distance")
51 FORCEINLINE
float GetZoomMin()
const
53 return Cast<AGameCameraManager>(GetOwner())->BaseDistance * ZoomMinRatio;
56 UFUNCTION(BlueprintPure, Category =
"Camera|Distance")
57 FORCEINLINE
float GetTargetDistance()
const
59 return TargetDistance;
62 UFUNCTION(BlueprintPure, Category =
"Camera|Distance")
63 FORCEINLINE
float GetCurrentDistance()
const
65 return CurrentDistance;
69 UPROPERTY(EditDefaultsOnly, Category =
"Camera|Distance", meta = (ClampMin =
"20.0", ClampMax =
"80.0"))
70 float ZoomSpeed = 30.0f;
72 UPROPERTY(EditDefaultsOnly, Category = "Camera|Distance", meta = (ClampMin = "3.0", ClampMax = "10.0"))
73 float ZoomAcceleration = 5.0f;
75 UPROPERTY(EditDefaultsOnly, Category = "Camera|Distance", meta = (ClampMin = "3.0", ClampMax = "10.0"))
76 float ZoomDeceleration = 5.0f;
79 UPROPERTY(EditDefaultsOnly, Category = "Camera|Distance", meta = (ClampMin = "0.0", ClampMax = "3.0"))
80 float ZoomMaxRatio = 1.0f;
83 UPROPERTY(EditDefaultsOnly, Category = "Camera|Distance", meta = (ClampMin = "0.0", ClampMax = "1.0"))
84 float ZoomMinRatio = 0.3f;
87 float CurrentDistance = 0.0f;
88 float TargetDistance = 0.0f;
Definition GameCameraManager.h:28
Definition CameraBehaviorInterface.h:21