// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "CoreMinimal.h" #include "Abilities/GameplayAbility.h" #include "InteractionOption.h" #include "IInteractionInstigator.generated.h" struct FInteractionQuery; /** */ UINTERFACE(MinimalAPI, meta = (CannotImplementInterfaceInBlueprint)) class UInteractionInstigator : public UInterface { GENERATED_BODY() }; /** * Implementing this interface allows you to add an arbitrator to the interaction process. For example, * some games present the user with a menu to pick which interaction they want to perform. This will allow you * to take the multiple matches (Assuming your ULyraGameplayAbility_Interact subclass generates more than one option). */ class IInteractionInstigator { GENERATED_BODY() public: /** Will be called if there are more than one InteractOptions that need to be decided on. */ virtual FInteractionOption ChooseBestInteractionOption(const FInteractionQuery& InteractQuery, const TArray& InteractOptions) = 0; };