void FGAEffectModifierContainer::AddModifier(const FGAEffectModifierSpec& ModSpec, const FGameplayTagContainer& Tags, const FGAEffectHandle HandleIn, TSharedPtr<FGAActiveDuration> EffectPtr) { FString complexString = Tags.ToString(); FString simpleString = Tags.ToStringSimple(); FName test(*simpleString); for (const FGameplayTag& tag : Tags) { FGAEffectModifier& mods = Modifiers.FindOrAdd(tag); FGAModifier modifier(ModSpec.Mod, ModSpec.DirectModifier.Value, EffectPtr); modifier.ModifierType = ModSpec.ModifierType; mods.AddBonus(modifier, HandleIn); } }
FReply FGameplayTagContainerCustomization::OnClearAllButtonClicked() { FScopedTransaction Transaction(LOCTEXT("GameplayTagContainerCustomization_RemoveAllTags", "Remove All Gameplay Tags")); for (int32 ContainerIdx = 0; ContainerIdx < EditableContainers.Num(); ++ContainerIdx) { UObject* OwnerObj = EditableContainers[ContainerIdx].TagContainerOwner; FGameplayTagContainer* Container = EditableContainers[ContainerIdx].TagContainer; if (OwnerObj && Container) { OwnerObj->PreEditChange(StructPropertyHandle->GetProperty()); FGameplayTagContainer EmptyContainer; StructPropertyHandle->SetValueFromFormattedString(EmptyContainer.ToString()); OwnerObj->PostEditChange(); RefreshTagList(); } } return FReply::Handled(); }