diff --git a/Source/UHLGAS/Private/UHLAbilitySystemComponent.cpp b/Source/UHLGAS/Private/UHLAbilitySystemComponent.cpp index 4f931d4..a9a449c 100644 --- a/Source/UHLGAS/Private/UHLAbilitySystemComponent.cpp +++ b/Source/UHLGAS/Private/UHLAbilitySystemComponent.cpp @@ -9,9 +9,22 @@ #include "Core/UHLGameplayTags.h" #include "Development/UHLGASSettings.h" #include "Utils/UnrealHelperLibraryBPL.h" +#include "GameplayAbilitySpec.h" #include UE_INLINE_GENERATED_CPP_BY_NAME(UHLAbilitySystemComponent) +FGameplayAbilitySpecHandle UUHLAbilitySystemComponent::GiveAbilityWithSource(TSubclassOf AbilityClass, int32 AbilityLevel, int32 InputID, UObject* SourceObject) +{ + if (!AbilityClass) + { + return FGameplayAbilitySpecHandle(); + } + + FGameplayAbilitySpec AbilitySpec(AbilityClass, AbilityLevel, InputID, SourceObject); + + return GiveAbility(AbilitySpec); +} + void UUHLAbilitySystemComponent::BeginPlay() { Super::BeginPlay(); diff --git a/Source/UHLGAS/Public/UHLAbilitySystemComponent.h b/Source/UHLGAS/Public/UHLAbilitySystemComponent.h index efadf2f..0635ac5 100644 --- a/Source/UHLGAS/Public/UHLAbilitySystemComponent.h +++ b/Source/UHLGAS/Public/UHLAbilitySystemComponent.h @@ -31,6 +31,10 @@ class UHLGAS_API UUHLAbilitySystemComponent : public UAbilitySystemComponent // UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="UHL AbilitySystemComponent", meta=(ShowOnlyInnerProperties)) // FUHLAbilitySystemSettings Settings = {}; + // Grant Ability with exposed Source object + UFUNCTION(BlueprintCallable, BlueprintAuthorityOnly, Category = "Gameplay Abilities", meta = (DisplayName = "Give Ability With Source", ScriptName = "GiveAbilityWithSource")) + FGameplayAbilitySpecHandle GiveAbilityWithSource(TSubclassOf AbilityClass, int32 AbilityLevel = 1, int32 InputID = -1, UObject* SourceObject = nullptr); + UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="UHL AbilitySystemComponent", meta=(InlineEditConditionToggle)) bool bInitializeGameplayAttributes = true; UPROPERTY(EditAnywhere, BlueprintReadWrite, Category="UHL AbilitySystemComponent", meta=(ForceInlineRow, EditCondition="bInitializeGameplayAttributes"))