UpdateOverlaps not called after receiving component replicated transform

I’m not certain this is a bug, but it seems like an issue to me.
Component transforms are automatically replicated by engine if component itself is replicated, so any component movements made on server will be reflected on clients. However, on receiving new transform, client does not call UpdateOverlaps, which means that Begin/EndOverlap events will not be triggered client side.

This would seem to render these events useless (or anyway unreliable) on client, since they will fall out of sync with server, at least until component in question subsequently gets moved client side (such as through character movement).

Of course events could be processed server side and desired results replicated manually to client, but this is no good when doing prediction or anything else that needs to be low latency.

Hi kamrann,

Typically, as you mentioned, this would be done on Server. Can you give me an example with some setup details for when you’d need this to be done client-side? An example test project would be helpful, too. Thanks!

Hi .
Sorry, I didn’t get chance to get back to you on this.

specific situation I had with this was in making a basic interaction system. I wanted to use overlap events client-side to maintain a list of actors that were within interaction range of player. This list would then be used to provide visual feedback, such as object highlighting, all of which was required client-side only and should be lag-free.

Of course, there are other ways to do this, however it just seemed to me like a legitimate use case for client-side overlap events, and I would imagine there might be plenty more. If however it is express intention that these events should not be used on client, I would think that could be made more clear, at least in documentation, if not enforced somehow, or reported as runtime warnings.

Cheers.

Okay, I misunderstood you. I can see a use for that, and it seems like it ought to work. I did a quick test and it seemed like Client was detecting an overlap at both old location and new location of component that was moved (using SetWorldTransform). I’m going to do another few tests and probably enter a bug report, if I don’t see that I’m doing something wrong, and get back to you. Thanks for your patience.

If you can show me your setup or show me a test project, that may prove useful as well. Thanks!

Hey kamrann,

I’ve entered a bug report for this issue (UE-24334), as I was able to reproduce problem when using SetWorldTransform on component directly. This does not seem to occur when Actor itself is translated, and in fact this updates overlaps on components with it. only workaround I can think of for moment is to Set Transform on Actor itself after setting Transform on component, even if only slightly, to update component’s collision on Client. I will let you know if I see any update on bug. Thanks for report!

Yep, I was also directly setting component transforms on server in my case. That’s interesting that it works fine on actor level, and does suggest that it is in fact a bug.

Thanks for looking into it.