// © 2024 Long Ly. All rights reserved. Any unauthorized use, reproduction, or distribution of this trademark is strictly prohibited and may result in legal action.

#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "OLSMoveableInterface.generated.h"

// This class does not need to be modified.
UINTERFACE()
class UOLSMoveableInterface : public UInterface
{
	GENERATED_BODY()
};

/**
 * 
 */
class OLSANIMATION_API IOLSMoveableInterface
{
	GENERATED_BODY()

	// Add interface functions to this class. This is the class that will be inherited to implement this interface.
public:

	virtual class UPawnMovementComponent* GetMovementComponent() const = 0;
	virtual class UOLSLocomotionComponent* GetLocomotionComponent() const = 0;
	virtual float GetMaxAcceleration() const = 0;
	virtual FVector GetCurrentAcceleration() const = 0;
	virtual EMovementMode GetMovementMode() const = 0;

	virtual void SetMaxWalkSpeed(const float newMaxWalkSpeed) = 0;

	virtual bool IsOrientRotationToMovement() const = 0;
};
