Please, PLEASE - Make OnRep_IsActive() virtual in UActorComponent.h

This is possibly the strangest thing I’ve discovered in the engine to date.

bIsActive is a replicated property of UActorComponent.h - the fact that it’s replicated implies that the Server should be able to change this and clients should update something accordingly. Now, OnRep_IsActive() is PUBLIC, but not-virtual and actually only calls one other function? Very strange encapsulation choice.

Calling SetActive() on the Server will Broadcast the OnComponentActivated and OnComponentDeactivated delegates too - but NOT on the client. All related server-side functions are virtual. All OnRep_IsActive() does is disable the components tick? This essentially means there’s no way to check on the Client if the Server just decided to activate/deactivate a component AND the client won’t broadcast those delegates either.

TL;DR - This is silly. Please make it virtual. I would submit a Pull Request but it’s not worth the 18 month waiting time for 8 characters of code.

Bumping because this is still kind of ridiculous.

I was asking for changing one function from private to protected and nobody ever answered or registered my request. I did PR, waited for about year and then it was accepted (yes, just private -> protected) :o Right now I am using custom build and doing PRs with hope that at some point I will be able to go back to launcher version (when all PRs are accepted). Definitely ridiculous.

Probably best way is contacting directly some engineer.

It’s done :wink:
https://github.com/EpicGames/UnrealEngine/commit/f66777a9d21823a566287936459c0a3622ec7e2b

Haha! Thankyou kindly :slight_smile: