OLS/Source/ols/Public/AbilitySystem/Interfaces/OLSAbilitySourceInterface.h
LongLy c0b033fb22 Implemented OLSGameplayAbility.
Implemented OLSCollisionChannels.
Implemented OLSGameplayEffectContext.
Implemented OLSPhysicalMaterialWithTags.
2025-01-20 11:59:57 -07:00

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;
};