Description

Editing an array of gameplay tags on a component belonging to an actor instance can lead to a crash. There are inconsistencies with how the Gameplay Tag Editor widget behaves:

  1. Array of gameplay tags in an actor property - The gameplay tag editor widget remains open as you select tags for the array entry and updates correctly.
  2. Single gameplay tag property on a component - The gameplay tag editor widget closes after each tag selection and updates properly.
  3. Array of gameplay tags on a component - The gameplay tag editor widget remains open, but the checkbox widgets do not update to reflect the current selection.

Scenarios 1 and 2 do not seem to lead to a crash. 

Steps to Reproduce

Copied from UDN with a few changes:

  1. Add a set of of deeply hierarchical Gameplay Tags to the project. Example: AI.PreferenceAreas.Testbeds.NewWanderBehavior.Zone1; AI.PreferenceAreas.Testbeds.NewWanderBehavior.Zone2; AI.PreferenceAreas.Testbeds.NewWanderBehavior.Zone3; 
  2. Create a component and an actor. Attach the component to the actor.
  3. Inside the component, create an instance editable array of gameplay tags.
  4. Drop your actor in the level
  5. Attempt to populate the array of gameplay tags on that instanced actor's component with your newly created tags
  6. It may take a few edits, but the editor will eventually crash.
Callstack
>	UnrealEditor-GameplayTagsEditor.dll!TArray<FGameplayTag,TSizedDefaultAllocator<32>>::Contains<FGameplayTag>(const FGameplayTag & Item) Line 1109	C++
 	[Inline Frame] UnrealEditor-GameplayTagsEditor.dll!FGameplayTagContainer::HasTag(const FGameplayTag &) Line 295	C++
 	UnrealEditor-GameplayTagsEditor.dll!SGameplayTagWidget::IsTagChecked(TSharedPtr<FGameplayTagNode,1> Node) Line 738	C++
 	[Inline Frame] UnrealEditor-GameplayTagsEditor.dll!Invoke(ECheckBoxState(const SGameplayTagWidget::*)(TSharedPtr<FGameplayTagNode,1>)) Line 66	C++
 	[Inline Frame] UnrealEditor-GameplayTagsEditor.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int,0>,TSharedPtr<FGameplayTagNode,1>>::ApplyAfter(ECheckBoxState(const SGameplayTagWidget::*)(TSharedPtr<FGameplayTagNode,1>) &) Line 324	C++
 	UnrealEditor-GameplayTagsEditor.dll!TBaseSPMethodDelegateInstance<1,SGameplayTagWidget const ,1,enum ECheckBoxState __cdecl(void),FDefaultDelegateUserPolicy,TSharedPtr<FGameplayTagNode,1>>::Execute() Line 290	C++
 	[Inline Frame] UnrealEditor-Slate.dll!TDelegate<enum ECheckBoxState __cdecl(void),FDefaultDelegateUserPolicy>::Execute() Line 588	C++
 	[Inline Frame] UnrealEditor-Slate.dll!TAttribute<enum ECheckBoxState>::Get() Line 236	C++
 	UnrealEditor-Slate.dll!SCheckBox::GetForegroundColor() Line 299	C++
 	UnrealEditor-SlateCore.dll!SCompoundWidget::OnPaint(const FPaintArgs & Args, const FGeometry & AllottedGeometry, const FSlateRect & MyCullingRect, FSlateWindowElementList & OutDrawElements, int LayerId, const FWidgetStyle & InWidgetStyle, bool bParentEnabled) Line 37	C++

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-152813 in the post.

0
Login to Vote

Fixed
ComponentUE - Gameplay
Affects Versions5.0.1
Target Fix5.1
Fix Commit21210653
Main Commit21210653
CreatedMay 17, 2022
ResolvedJul 21, 2022
UpdatedAug 13, 2022