So what I had to do for this ultimately was create a C++ Wrapper for the Actor component. This is obviously a less-than-ideal solution as it doesn’t really help if you need to set the owner of a Pawn or Character (unless you want to redo your own Pawn/Character) but it did get my problem fixed.
For completeness, for anyone who comes by and sees this, from a Project that had zero C++, I simply went to File > Add Code to Project, that brought up a wizard that walks you through creating a class. Pick a base class of Actor, then give the class a name, say, ActorBPWrapper, and then it should generate the basic code project. (Don’t mess with the directory. Unless you’re planning on doing a lot more C++, I don’t think it will come up.)
From there, you’ll have two files: ActorBPWrapper.h and ActorBPWrapper.cpp.
Think of the .h file as “What the class does” and the .cpp file as “How the class does it.” So you want to put in the .h file (in between the { } (curly braces) but underneath the “GENERATED_UCLASS_BODY()” line):
public:
UFUNCTION(BlueprintCallable, Category = Actor)
void SetOwnerTo(AActor* NewOwner);
Then, in the .cpp file, you’ll want to put the following at the very bottom of the file (after the last } (curly brace)):
void AOwnedActor::SetOwnerTo(AActor *NewOwner)
{
Super::SetOwner(NewOwner);
}
That should be pretty much it. I changed the name from “SetOwner” to “SetOwnerTo” because I didn’t want to actually try to override (or hide) the existing SetOwner function.
Like I said, it’s a less than ideal solution, but it’s fast and it works.
I should note that if they put that “UFUNCTION(BlueprintCallable, Category = Actor)” on top of the existing SetOwner function, it would fix this issue. And based on the content of the SetOwner function, I think that could be done without effort. Unfortunately I don’t know where to put this request.