49 lines
1.6 KiB
C++
49 lines
1.6 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#pragma once
|
|
|
|
#include "UObject/Interface.h"
|
|
#include "InteractableTargetInterface.generated.h"
|
|
|
|
struct FInteractionContext;
|
|
struct FInteractionQueryResults;
|
|
|
|
// This class does not need to be modified.
|
|
UINTERFACE(BlueprintType, meta = (CannotImplementInterfaceInBlueprint))
|
|
class INTERACTABLEINTERFACE_API UInteractionTarget : public UInterface
|
|
{
|
|
GENERATED_BODY()
|
|
};
|
|
|
|
/**
|
|
* Implement this interface on things that are able to be interacted with.
|
|
*
|
|
* A target should be something in the world that can be interacted with. For example,
|
|
* a treasure chest which can be opened, an item that can picked up, or some narrative design
|
|
* element for your game.
|
|
*/
|
|
class INTERACTABLEINTERFACE_API IInteractionTarget
|
|
{
|
|
GENERATED_BODY()
|
|
public:
|
|
|
|
/**
|
|
* Determines what the configuration of this target is.
|
|
* Gather information about this specific target so that it can be displayed
|
|
* to the player and provide access to what behavior should occur in response
|
|
* to this interaction.
|
|
*
|
|
* @param Context The context of this interaction.
|
|
* @param OutResults Output results that this target will populate
|
|
*/
|
|
virtual void AppendTargetConfiguration(const FInteractionContext& Context, OUT FInteractionQueryResults& OutResults) const = 0;
|
|
|
|
/**
|
|
* Called when this target is interacted with. Implement any state changes or gameplay affects
|
|
* you want this interaction to have here
|
|
*
|
|
* @param Context The context of this interaction. This is customizable for your
|
|
* game by adding additional context types.
|
|
*/
|
|
virtual void BeginInteraction(const FInteractionContext& Context) = 0;
|
|
}; |