The implementation above interacts with a non-UObject derived singleton object. This is a good way to expose 3rd party library functions to Blueprints or to interact with C++ classes that don't have UObject support. The code below is an example of a Blueprint Function Library method that performs some common work to find the AIController for a controlled actor: