test/Source/MyProject/Variant_SideScrolling/SideScrollingCameraManager.h

48 lines
1.5 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Camera/PlayerCameraManager.h"
#include "SideScrollingCameraManager.generated.h"
/**
* Simple side scrolling camera with smooth scrolling and horizontal bounds
*/
UCLASS()
class ASideScrollingCameraManager : public APlayerCameraManager
{
GENERATED_BODY()
public:
/** Overrides the default camera view target calculation */
virtual void UpdateViewTarget(FTViewTarget& OutVT, float DeltaTime) override;
public:
/** How close we want to stay to the view target */
UPROPERTY(EditAnywhere, Category="Side Scrolling Camera", meta=(ClampMin=0, ClampMax=10000, Units="cm"))
float CurrentZoom = 1000.0f;
/** How far above the target do we want the camera to focus */
UPROPERTY(EditAnywhere, Category="Side Scrolling Camera", meta=(ClampMin=0, ClampMax=10000, Units="cm"))
float CameraZOffset = 100.0f;
/** Minimum camera scrolling bounds in world space */
UPROPERTY(EditAnywhere, Category="Side Scrolling Camera", meta=(ClampMin=-100000, ClampMax=100000, Units="cm"))
float CameraXMinBounds = -400.0f;
/** Maximum camera scrolling bounds in world space */
UPROPERTY(EditAnywhere, Category="Side Scrolling Camera", meta=(ClampMin=-100000, ClampMax=100000, Units="cm"))
float CameraXMaxBounds = 10000.0f;
protected:
/** Last cached camera vertical location. The camera only adjusts its height if necessary. */
float CurrentZ = 0.0f;
/** First-time update camera setup flag */
bool bSetup = true;
};