Context
AbilitySystemComponent has a virtual function
virtual void OnTagUpdated(const FGameplayTag& Tag, bool TagExists);
that gets called when a gameplay tag gets added or removed, so whenever a gameplay tag's count changes states between zero and non-zero.
Problem
A licensee has reported that this function is not called when setting a tag's count directly via
void UAbilitySystemComponent::SetLooseGameplayTagCount(const FGameplayTag& GameplayTag, int32 NewCount);
while it does get called via other APIs like Add/RemoveLooseGameplayTagCount(). I confirmed both those observations.
Suggestion
SetLooseGameplayTagCount() should cause OnTagUpdated() to be called when the call causes the tag to change states between present and not-present.
Non-fatal, just for reference:
> [Inline Frame] UnrealEditor-GASRepro53.dll!UAbilitySystemComponent::SetTagMapCount(const FGameplayTag &) Line 622 C++
[Inline Frame] UnrealEditor-GASRepro53.dll!UAbilitySystemComponent::SetLooseGameplayTagCount(const FGameplayTag &) Line 687 C++
How does TextureRenderTarget2D get TArray<uint8> type data?
Why does the REMOVE method of map container remove elements have memory leaks?
How do I set a material as a post-processing material?
What is the cause of the packaging error falling back to 'GameUserSettings' in ue5?
How to delete some elements correctly when deleting an array loop?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-233798 in the post.