It looks like FDynamicOutputHelper::IsTypePickerPin and FDynamicOutputHelper::GetTypePickerPin need to be updated to support soft references.
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
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-47982 in the post.
| 5 |
| Component | UE - Gameplay - Blueprint Compiler |
|---|---|
| Affects Versions | 4.17, 4.18 |
| Target Fix | 4.26 |
| Created | Aug 2, 2017 |
|---|---|
| Resolved | May 19, 2020 |
| Updated | Oct 16, 2020 |