@gmpreussner, can you elaborate a bit on what that means in practice?
You’re saying it’s okay to call NewObject outside of the game thread? If so that’s news to me. Is there some synchronization going on to prevent the GC from snaffling the object before we have chance to root it or reference it somewhere?
And then what about safely setting a UObject* property somewhere, since the GC could be reading those at any time, right?
I’d previously assumed the only potentially safe way to use a UObject in a background thread was to pass a pointer from the game thread to an existing object that you know is guaranteed to remain alive, and even then to pretty much stick to only accessing code and member variables that we control ourselves.