I have a scenario which seem related to this.
For some reason a binding to a property of an output object is considered an invalid type. Even though the UStateTree match.
UCLASS(BlueprintType)
class UMyGameRuntimeResource
{
GENERATED_BODY()
public:
...
UPROPERTY(EditAnywhere, Category = "MyGame")
UStateTree* StateTree = nullptr;
};
USTRUCT()
struct FMyGameResourceProviderTaskData :
{
GENERATED_BODY()
UPROPERTY(EditAnywhere, Category = "Output")
UMyGameRuntimeResource* OutResource;
};
USTRUCT()
struct FMyGameResourceProviderTask
: public FCourageStateTreeResourceProviderTaskBase
{
GENERATED_BODY()
...
};
USTRUCT()
struct COURAGE_AI_API FCourageStateTreeRunInstanceData
{
GENERATED_BODY()
...
UPROPERTY(EditAnywhere, Category = "Input", meta=(DisplayPriority=0))
UStateTree* InStateTree = nullptr;
};
USTRUCT(BlueprintType, meta = (Category = "Courage", DisplayName = "State Tree Runner Task"))
struct COURAGE_AI_API FCourageStateTreeRunTask : public FStateTreeTaskCommonBase
{
GENERATED_BODY()
...
};