ensureMsgf in SPropertyEditorAsset::Construct - UProxyTable lacks "ResultAssetFilter" UFUNCTION referenced by FAssetChooser meta=(GetAssetFilter) [Chooser/ProxyTable plugin]

Summary

-------

Opening a Proxy Table asset (UProxyTable) that contains a hard-reference “Asset”

row result reliably trips an ensure in the Property Editor:

Ensure condition failed: GetFilterFunction

[SPropertyEditorAsset.cpp:605]

Could not find UFunction ResultAssetFilter on [ProxyTableAssetName]

The editor continues afterward (the ensure is non-fatal), but it breaks into the

debugger every fresh session and spams the log. The asset picker for that row

silently falls back to unfiltered.

Engine version

--------------

UE 5.7 (//UE5/Release-5.7). Reproduces on the stock, unmodified Chooser /

ProxyTable experimental plugin - the relevant files

(ObjectChooser_Asset.h, Chooser.h, SPropertyEditorAsset.cpp) are unchanged from

Epic’s source in our integration. We are a licensee fork

(local build version 5.7.4) but none of our changes touch this path.

Root cause

----------

FAssetChooser declares its asset property with a metadata filter hook:

// Engine/Plugins/Chooser/Source/Chooser/Internal/ObjectChooser_Asset.h:24

UPROPERTY(EditAnywhere, Category = “Parameters”,

    meta \= (GetAssetFilter\="ResultAssetFilter"))

TObjectPtr<UObject> Asset;

SPropertyEditorAsset resolves that filter by calling FindFunction on the

property’s outer object:

// Engine/Source/Editor/…/SPropertyEditorAsset.cpp:~603-605

const UFunction* GetFilterFunction = Object->FindFunction(*GetFilterFunctionName);

ensureMsgf(GetFilterFunction, TEXT(“Could not find UFunction %s on %s”),

    \*GetFilterFunctionName, \*GetNameSafe(Object));

ResultAssetFilter is implemented only on UChooserTable:

// Engine/Plugins/Chooser/Source/Chooser/Internal/Chooser.h:184

UFUNCTION()

CHOOSER_API bool ResultAssetFilter(const FAssetData& AssetData);

FAssetChooser is reused as a row result inside UProxyTable as well as inside

UChooserTable. When the outer is a UChooserTable the lookup succeeds. When the

outer is a UProxyTable - which has no ResultAssetFilter UFUNCTION - FindFunction

returns null and the ensure fires.

Note: only the hard-reference FAssetChooser carries this meta; the soft variant

FSoftAssetChooser (ObjectChooser_Asset.h:42) does not, so soft-reference rows do

not trigger it.

Impact

------

- Non-fatal, but breaks into the debugger every session and logs an error.

- The asset picker for proxy-table asset rows is effectively unfiltered (the

intended type filtering from ResultAssetFilter does not run for proxy tables).

---

NOTE: I am able to repro this issue 100% of the time on my local machine with no confounding local changes. However, the colleagues I’ve spoken to do not experience this error in our testing.

Steps to Reproduce
Repro steps

-----------

1. Create or open a UProxyTable asset.

2. Add an entry whose Value is the “Asset” result type (FAssetChooser - a hard

object reference).

3. Open the proxy table so the Details/row widget for that asset property is

constructed.

4. ensureMsgf at SPropertyEditorAsset.cpp:605 fires (breaks under a debugger).

Hey there,

Apologies for the long delay. This was most likely fixed by this change. https://github.com/EpicGames/UnrealEngine/commit/d9f70ffa9b50e1643ceb32ddcbd3272592f0cc5b, which is in 5.8

Dustin