// Oleg Petruny proprietary.

#pragma once

#include "GameFramework/SpectatorPawn.h"

#include "CameraModeBase.generated.h"

/**
 * Cheap copy of PlayerBase for level fly spectating purposes.
 */
UCLASS()
class ACameraModeBase : public ASpectatorPawn
{
    GENERATED_BODY()

public:
    ACameraModeBase();

    virtual void Tick(float DeltaTime) override;
    virtual void SetupPlayerInputComponent(class UInputComponent* PlayerInputComponent) override;

protected:
    virtual void BeginPlay() override;

    UFUNCTION(BlueprintCallable, Category = CameraMode)
    void SwitchToPlayerPawn();

    UFUNCTION(BlueprintCallable, Category = Pawn)
    void ElevatePawn(float value);
    UFUNCTION(BlueprintCallable, Category = Pawn)
    void SwitchRun(bool run);

    UPROPERTY(EditDefaultsOnly)
    float moveSpeed = 200;
    UPROPERTY(EditDefaultsOnly)
    float runSpeedMultiplier = 4;

private:
    TSoftObjectPtr<class UInputMappingContext> context;

};
