Description

It looks like FDynamicOutputHelper::IsTypePickerPin and FDynamicOutputHelper::GetTypePickerPin need to be updated to support soft references.

Steps to Reproduce

Create a new C++ class with the following code:

  UCLASS()
  class UTestFunctionLibrary : public UBlueprintFunctionLibrary
  {
      GENERATED_BODY()
  
      // OK
      UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="Class"))
      static UObject* TestClass(const TSubclassOf<UObject>& Class)
      {
          return nullptr;
      }
  
      // NG
      UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="Asset"))
      static UObject* TestAssetPtr(const TAssetPtr<UObject>& Asset)
      {
          return nullptr;
      }
  
      // NG
      UFUNCTION(BlueprintCallable, meta=(DeterminesOutputType="AssetClass"))
      static TSubclassOf<UObject> TestAssetClass(const TAssetSubclassOf<UObject>& AssetClass)
      {
          return nullptr;
      }
  };
 

And after compiling and starting the editor, try placing the nodes TestClass, TestAssetPtr, and TestAssetClass in a Blueprint.

Expected: All three change the output type to match the type of the input parameter as it is changed.
Actual: Only TestClass works as expected

Have Comments or More Details?

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

5
Login to Vote

Fixed
ComponentUE - Gameplay - Blueprint Compiler
Affects Versions4.174.18
Target Fix4.26
Fix Commit13435875
Main Commit13686746
CreatedAug 2, 2017
ResolvedMay 19, 2020
UpdatedOct 16, 2020