#pragma once

#include "CoreMinimal.h"
#include "InteractionDefinition.h"
#include "BlightedSerumDashInteraction.generated.h"

class UBlightedSerumCooldownInteraction;
class UBlightedSerumCollisionInteraction;
class UCurveFloat;

UCLASS(Blueprintable, EditInlineNew, meta=(BlueprintSpawnableComponent))
class HALLOWEEN2020_API UBlightedSerumDashInteraction : public UInteractionDefinition
{
	GENERATED_BODY()

private:
	UPROPERTY(BlueprintReadWrite, Transient, Instanced, meta=(AllowPrivateAccess=true))
	UBlightedSerumCooldownInteraction* _cooldownInteraction;

	UPROPERTY(BlueprintReadWrite, Transient, Instanced, meta=(AllowPrivateAccess=true))
	UBlightedSerumCollisionInteraction* _collisionInteraction;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	UCurveFloat* _dashSpeedCurve;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	UCurveFloat* _lookAngleToTurnRateCurveController;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	UCurveFloat* _lookAngleToTurnRateCurveMouse;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _dashDuration;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _vectorInterpToSpeed;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _wallDashAccelerationMultiplier;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _cameraPitchRecenterTime;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _lookAngleTurnRateModifier;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _wallDashCollisionRadius;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _wallDashCollisionHeight;

	UPROPERTY(EditAnywhere, BlueprintReadWrite, meta=(AllowPrivateAccess=true))
	float _wallDashCollisionRange;

public:
	UFUNCTION(BlueprintCallable)
	void SetCooldownInteraction(UBlightedSerumCooldownInteraction* cooldownInteraction);

	UFUNCTION(BlueprintCallable)
	void SetCollisionInteraction(UBlightedSerumCollisionInteraction* collisionInteraction);

public:
	UBlightedSerumDashInteraction();
};

FORCEINLINE uint32 GetTypeHash(const UBlightedSerumDashInteraction) { return 0; }
