Description

Property Editors for asset types allow you to drag assets from the Content Browser into them, or to make a selection using an Asset Picker widget. Some examples would be selecting Static Meshes or Materials inside the Details Panel for level actors, or by using a SinglePropertyView on an Editor Utility Widget.

However, if the chosen asset is within a path that contains a valid non-alphanumeric character, the selection will fail. On the other hand, if a previously-selected asset is then moved to a folder containing one of those characters, the reference is updated correctly and everything works fine.

Note that, when trying to rename folders and assets inside the Content Browser, the character restrictions seem different. This is a contibuting factor to the bug, but not the root cause:
\:*?"<>|',.&!~@#/[] disallowed for folders
\:*?"<>|',.&!~@#/[]$%(){}= disallowed for assets

The root cause seems to be related to the following call chain that happens when an asset is selected:

[Engine\Source\Editor\PropertyEditor\Private\PropertyHandleImpl.cpp]
[:4078] FPropertyHandleObject::SetValueFromFormattedString()

[Engine\Source\Runtime\CoreUObject\Private\UObject\PropertyBaseObject.cpp]
[:303] FObjectPropertyBase::ParseObjectPropertyValue()

[Engine\Source\Runtime\CoreUObject\Private\UObject\Property.cpp]
[:685] FPropertyHelpers::ReadToken()
[:645] ParsePropertyToken()

Function FObjectPropertyBase::ParseObjectPropertyValue() calls FPropertyHelpers::ReadToken() and expects it to return with a pointer to the next ' character. However, its internal function ParsePropertyToken() stops the parse when reaching any ASCII characters outside a set (alpha-numerics plus "_-+.:/" ). This causes the parse to fail (interestingly, it does not fail when the path includes any non-ascii special characters).

Steps to Reproduce

1 - In the Content Browser:
1.1 - Create a folder with a valid special character, such as "My(Test)Folder" without quotes
1.2 - Inside it, create a Material named "M_Test"
1.3 - Outside it, create and edit an Actor BP named "BP_Test"
2 - In the BP Editor:
2.1 - Create a variable named "MyMaterial" with type "Material"
2.2 - Mark the new variable as instance-editable
2.3 - Compile, save and close
3 - In the Level Editor:
3.1 - Place and select an actor of type "BP_Test"
3.2- In the Details Panel, try to select "M_Test" by either dragging from the Content Browser or using the Asset Picker
3.3- The operation will fail

Have Comments or More Details?

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

0
Login to Vote

Backlogged
ComponentUE - Editor - Workflow Systems
Affects Versions5.4.4
CreatedSep 20, 2024
UpdatedOct 4, 2024
View Jira Issue