Hi.
When creating a UE4 UInterface (such that C++ classes can derive the I<InterfaceName> class, and BP can "implement" the U<InterfaceName>), if you specify any of the UFUNCTIONs as BlueprintNative you cannot implement them with this tool.
#include "NoExportTypes.h"
#include "Filename.generated.h"
UINTERFACE()
class UMyInterface : public UInterface
{
GENERATED_BODY()
};
class IMyInterface
{
GENERATED_IINTERFACE_BODY() // @note: this macro has to be IINTERFACE_BODY, it cannot be GENERATED_BODY;
UFUNCTION(BlueprintCallable, BlueprintNativeEvent)
void TestFunction(UObject* InParam);
// virtual void TestFunction_Implementation(UObject* InParam); // @note: you can't declare this yourself - UHT will unconditionally generate the below line
// virtual void TestFunction_Implementation(UObject* InParam)=0;
};
// elsewhere, or even in the same file
UCLASS()
class UMyTestObject : public UObject, public IMyInterface
{
GENERATED_BODY()
};
Placing your cursor over IMyInterface in UMyTestObject's declaration and invoking ImplementVirtualMethods will result in Visual Assist not finding the virtual functions from IMyInterface.
Suggestion - generate a commented out declaration such as in my example rather than or alongside an implementation body in the source; granted a method body makes zero sense here as the function is declared pure virtual. Tangentially, it'd be nice to have the declaration for Validate and Implementation functions generated when their bodies are generated via CreateImplementation (if Validate is automatically generated for Server RPCs, and this isn't the default behavior).