Why do these two methods of getting Child Actor Class return different results?

Hello everyone!

I’m working on a weapon system that involves setting a child actor’s class according to a data table class reference and then calling an initialization function within the weapon class to set the skeletal mesh for the weapon in question.

I’ve noticed for some reason when I try to cast to my master weapon blueprint, the server/host registers the right child class every time, but any clients connected to the server register the master/parent class instead of the correct child class.

Here’s what I discovered:


Using the above sequence, these should theoretically be returning the same answer right? I had thought so because you’re grabbing the Child Actor Class, just two different ways, but the results are actually different.

image
Above is the output from the previous image. It shows that the server is registering the Child Actor Class to be the correct child weapon class, but the client shows the master weapon class instead.

Any idea why these two approaches to getting the class show different results for clients, and by extension why my cast is different between my server and client?