38 lines
1.4 KiB
C
38 lines
1.4 KiB
C
|
// © 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 "GameplayTagContainer.h"
|
|||
|
#include "OLSAbilitySourceInterface.generated.h"
|
|||
|
|
|||
|
// This class does not need to be modified.
|
|||
|
UINTERFACE()
|
|||
|
class UOLSAbilitySourceInterface : public UInterface
|
|||
|
{
|
|||
|
GENERATED_BODY()
|
|||
|
};
|
|||
|
|
|||
|
/**
|
|||
|
*
|
|||
|
*/
|
|||
|
class OLS_API IOLSAbilitySourceInterface
|
|||
|
{
|
|||
|
GENERATED_IINTERFACE_BODY()
|
|||
|
/**
|
|||
|
* Compute the multiplier for effect falloff with distance
|
|||
|
* ABILITY_LOG
|
|||
|
* @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;
|
|||
|
};
|