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