Download

Please create Global delegates for 'HandleNetworkError' and 'HandleTravelFailure' in UGameInstance!

Currently, there is no possible way to detect certain network errors in any class other than your Game Instance, because this is the only location in code they are notified.



    /** Opportunity for blueprints to handle network errors. */
    UFUNCTION(BlueprintImplementableEvent, meta=(DisplayName = "NetworkError"))
    void HandleNetworkError(ENetworkFailure::Type FailureType, bool bIsServer);

    /** Opportunity for blueprints to handle travel errors. */
    UFUNCTION(BlueprintImplementableEvent, meta=(DisplayName = "TravelError"))
    void HandleTravelError(ETravelFailure::Type FailureType);


I have a plugin that adds Network functionality via a UObject, which acts as a manager and is created as a sub-object of the GameInstance (thus making the plugin modular). Unfortunately, I’ve had to create a special game instance for this plugin and add delegates to it - so that the UObject manager can bind to them.

This is a really limiting design, and I would really appreciate this being able to bind other classes to these events so that I can handle errors appropriately. Find it kind of weird that the entire OSS is accessible from almost anywhere whereas this isn’t.

Okay after much digging around I finally found something:

GEngine->OnNetworkFailure() - this is a delegate you can bind to. Hooray!