EvaluateObjectChooserBaseSoft not working with a proxy table

Hi,

I wanted to use a Chooser with a soft references and I am using the proxy table at the same time.

It seems that EvaluateObjectChooserBaseSoft() does not support both at this time (it will return always nullptr when the asset exists but it is not loaded). It is because default implementation of FLookupProxyWithOverrideTable::ChooseObject just casts the result to the soft pointer. So I added implementation of FindProxyObject() version with soft pointer to the UProxyTable. Also FLookupProxyWithOverrideTable::ChooseObject with soft pointer had to be overriden because it has to call the proper (new) version of FindProxyObject.

The same thing could be done with the multi variants but I didn’t needed so far.

Do you think that this is something that could be added in the next version of engine? I can of course provide the changelist but the implementation is very simple.

Thanks.

Steps to Reproduce

Hey there,

Yes, right now LookupProxy currently does not support soft object references as it’s using an older api to evaluate the chooser. Regular choosers use a slightly different API that will always return a soft object reference even if the type of object is not a soft object, because when you dereference it, it will be loaded, and then you can handle loading a soft object type return on your side. Design-wise, we want both paths.

We won’t be able to get a fix for this into 5.7, but I’ve logged an issue that you can follow for 5.8.

https://issues.unrealengine.com/issue/UE-346966 - It will take a day for it to show up.

In terms of a workaround what you’re doing seems reasonable, you might also look into changing your approach to use the FObjectChooserBase::EIteratorStatus UChooserTable::EvaluateChooser version instead of Interface option as well.

Dustin

Thank you very much for help.