It seems like you’re missing “BlueprintCallable” in your UFUNCTION macros. That’s why you can’t call these function directly after receiving input.
Also, BlueprintCallable requires you to setup a category for your function. So to fix this, just replace this:
UFUNCTION(BlueprintNativeEvent)
void AddFuel(int32 FCount);
virtual void AddFuel_Implementation(int32 FCount);
UFUNCTION(BlueprintNativeEvent)
void DouseWithWater(); //Call in blueprint
virtual void DouseWithWater_Implementation();
UFUNCTION(BlueprintNativeEvent)
void EndBurn();
virtual void EndBurn_Implementation();
with this:
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Yours Category")
void AddFuel(int32 FCount);
virtual void AddFuel_Implementation(int32 FCount);
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Yours Category")
void DouseWithWater(); //Call in blueprint
virtual void DouseWithWater_Implementation();
UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category = "Yours Category")
void EndBurn();
virtual void EndBurn_Implementation();
That way, you should be able to get rid of your dispatchers and directly call these functions in blueprints.
Cheers.