Skip to content

Instantly share code, notes, and snippets.

@lambdan
Last active March 15, 2024 11:05
Show Gist options
  • Save lambdan/e95b86e14bc9edb1eb11e2b2651f7d26 to your computer and use it in GitHub Desktop.
Save lambdan/e95b86e14bc9edb1eb11e2b2651f7d26 to your computer and use it in GitHub Desktop.
Blueprint node to get all tags of an Ability (Unreal Engine Gameplay Ability System GAS)

Preview

In .h file:

// Returns all tags related to this ability
UFUNCTION(BlueprintPure, Category="GAS|Ability|Tags")
void GetTags(FGameplayTagContainer & OutAbilityTags, FGameplayTagContainer & OutCancelAbilitiesWithTags, FGameplayTagContainer & OutBlockAbilitiesWithTags, FGameplayTagContainer & OutActivationOwnedTags, FGameplayTagContainer & OutActivationRequiredTags, FGameplayTagContainer & OutActivationBlockedTags, FGameplayTagContainer & OutSourceRequiredTags, FGameplayTagContainer & OutSourceBlockedTags, FGameplayTagContainer & OutTargetRequiredTags, FGameplayTagContainer & OutTargetBlockedTags, FGameplayTagContainer & OutCooldownTags);

In .cpp file:

(Set UGAAbilityBase to your child class of a UGameplayAbility)

void UGAAbilityBase::GetTags(FGameplayTagContainer& OutAbilityTags, FGameplayTagContainer& OutCancelAbilitiesWithTags,
                             FGameplayTagContainer& OutBlockAbilitiesWithTags, FGameplayTagContainer& OutActivationOwnedTags,
                             FGameplayTagContainer& OutActivationRequiredTags, FGameplayTagContainer& OutActivationBlockedTags,
                             FGameplayTagContainer& OutSourceRequiredTags, FGameplayTagContainer& OutSourceBlockedTags,
                             FGameplayTagContainer& OutTargetRequiredTags, FGameplayTagContainer& OutTargetBlockedTags, FGameplayTagContainer&
                             OutCooldownTags)
{
	OutAbilityTags = this->AbilityTags;
	OutCancelAbilitiesWithTags = this->CancelAbilitiesWithTag;
	OutBlockAbilitiesWithTags = this->BlockAbilitiesWithTag;
	OutActivationOwnedTags = this->ActivationOwnedTags;
	OutActivationRequiredTags = this->ActivationRequiredTags;
	OutActivationBlockedTags = this->ActivationBlockedTags;
	OutSourceRequiredTags = this->SourceRequiredTags;
	OutSourceBlockedTags = this->SourceBlockedTags;
	OutTargetRequiredTags = this->TargetRequiredTags;
	OutTargetBlockedTags = this->TargetBlockedTags;

	if (!IsValid(CooldownGameplayEffectClass))
	{
		OutCooldownTags = FGameplayTagContainer();
	} else
	{
		OutCooldownTags = GetCooldownGameplayEffect()->GetGrantedTags();
	}

	
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment