// Fill out your copyright notice in the Description page of Project Settings.

#pragma once

#include "CoreMinimal.h"
#include "UObject/Interface.h"
#include "TriggerableInterface.h"
#include "InteractableInterface.generated.h"

USTRUCT(BlueprintType)
struct FInteractionInfos
{
    GENERATED_BODY()

    UPROPERTY(EditAnywhere, BlueprintReadWrite)
    FVector WorldLocation;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	FText ActionName;

	UPROPERTY(EditAnywhere, BlueprintReadWrite)
	TArray<class UPrimitiveComponent*> OutlineComponents;
};

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

/**
 * 
 */
class HOWLING_API IInteractableInterface
{
	GENERATED_BODY()

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

	UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = Interaction)
	void GetTriggerable(TScriptInterface<ITriggerableInterface>& Triggerable) const;

	UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = Interaction)
	FInteractionInfos GetInteractionInfos() const;
	virtual FInteractionInfos GetInteractionInfos_Implementation() const;

};
