Why can't I call a BlueprintImplementableEvent from another blueprint?

I am trying to call a method declared in the header file and implemented in a blueprint. The method declearation looks like this:

UFUNCTION(BlueprintImplementableEvent, Category = Gameplay)
void GetWindDirection(FVector& OutWindDirection) const;

But when I call this on a instance of a dervied blueprint, I get the following error message when compiling the blueprint:

 Error Function 'GetWindDirection' called from  Get Wind Direction  should not be called from a Blueprint

I suppose it is because it has no way of knowing if this method has been implemented (even though I cast to the actual blueprint which does have an implementation). In any case, the error message should probably be more explicit.

1 Like

For those looking for a work around, what I did was create a blueprint method that the implementing method calls. Then, when in a blueprint, you can just call the BP version of the same method. Not ideal but does work.

Try with:

UFUNCTION(BlueprintImplementableEvent, BlueprintCallable, Category = Gameplay)
void GetWindDirection(FVector& OutWindDirection) const;
3 Likes

Hmm, could have swore I tried that, but it certainly works in 4.4