RealtimeStyleTransferRuntime/Source/LyraGame/AbilitySystem/LyraAbilitySourceInterface.h

38 lines
1.3 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "UObject/Interface.h"
#include "UObject/UObjectGlobals.h"
#include "LyraAbilitySourceInterface.generated.h"
class UObject;
class UPhysicalMaterial;
struct FGameplayTagContainer;
/** Base interface for anything acting as a ability calculation source */
UINTERFACE()
class ULyraAbilitySourceInterface : public UInterface
{
GENERATED_UINTERFACE_BODY()
};
class ILyraAbilitySourceInterface
{
GENERATED_IINTERFACE_BODY()
/**
* Compute the multiplier for effect falloff with distance
*
* @param Distance Distance from source to target for ability calculations (distance bullet traveled for a gun, etc...)
* @param SourceTags Aggregated Tags from the source
* @param TargetTags Aggregated Tags currently on the target
*
* @return Multiplier to apply to the base attribute value due to distance
*/
virtual float GetDistanceAttenuation(float Distance, const FGameplayTagContainer* SourceTags = nullptr, const FGameplayTagContainer* TargetTags = nullptr) const = 0;
virtual float GetPhysicalMaterialAttenuation(const UPhysicalMaterial* PhysicalMaterial, const FGameplayTagContainer* SourceTags = nullptr, const FGameplayTagContainer* TargetTags = nullptr) const = 0;
};