Customer created a custom DataTable with a TSet Property and saw the behavior of allowing duplicate elements within the TSet, which is not allowed. See TSet Documentation for more information.
This is a general problem with sets/maps of Structs, the FPropertyValueImpl::ImportText function does not correctly handle the case of modifying something inside a struct inside a map, the Set code needs to traverse up the property chain further
Repro Ratio: 3/3
Tested in //UE4/Release-4.27 @ CL#18319896 and the issue did occur there, it is not a regression.
This same issue occurs
SIMPLER REPRO
ORIGINAL REPRO
#include "GameplayTagContainer.h" #include "Engine/DataTable.h"
USTRUCT(BlueprintType) struct FTestStruct_Inner { GENERATED_BODY() UPROPERTY(EditAnywhere) FGameplayTag myTag; bool operator==(const FTestStruct_Inner& ftsi){}; bool operator!=(const FTestStruct_Inner& ftsi) {}; friend uint32 GetTypeHash(const FTestStruct_Inner& hash) { return 0; }; }; USTRUCT(BlueprintType) struct FTestSTruct_Row : public FTableRowBase { GENERATED_BODY() UPROPERTY(EditAnywhere) TSet<FTestStruct_Inner> mySet; };
Blueprint Steps
Expected Result: With the TSet property the DataTable should not allow duplicate entries.
Actual Results: Duplicate entries are allowed and no indication within the Editor Console that this is an issue. However, when looking over logs you will see the following error:
Error: UDataTable::GetAllRows : Incorrect type specified for DataTable '/Game/PickUps.PickUps' (UGameplayTagsManager::PopulateTreeFromDataTable)
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-148872 in the post.
2 |
Component | UE - Editor - Workflow Systems |
---|---|
Affects Versions | 5.0, 5.1 |
Created | Apr 12, 2022 |
---|---|
Updated | Jan 19, 2024 |