I hit a huge snail when migrating to 4.9 from 4.8.
I was exposing several properties and functions to blueprints, that involded arrays of weak pointers to UObject or AActor derivatives.
I had several logical cross references, so I needed to break reference cycles. It worked fine for 4.8, and I didn’t get any leaks.
When switching to 4.9, I get UnrealHeaderTool errors like the following one:
Type 'TArray' is not supported by blueprint
If I use ordinary TArray’s of raw pointers, I UnrealHeaderTool gets to compile. But then I get reference cycles.
If I drop Blueprint exposure, code compiles but my blueprints and level blueprints break.
So, I basically have two questions:
Does anybody know why support for arrays of weak pointers was dropped at Blueprints exposure?
Does anybody have a recommendation for me to go about this?
(I don’t want to start deleting/destroying things by hand)
I asked the question here, but got no answers that could help me.
My properties look like:
UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Blah) TArray< TWeakObjectPtr<AMyActor> > Actors;
And the following things compile but cause me problems:
//UnrealHeaderTool can handle this, but I don't want to leave weak pointers UPROPERTY(EditAnywhere, BlueprintReadWrite, Category = Blah) TArray< AMyActor * > Actors; //UnrealHeaderTool can handle this but breaks my maps UPROPERTY() TArray< TWeakObjectPtr<AMyActor> > Actors;