In my quest to make the best weapon system out there (currently working in UE4) I have been moving all of my code to components.
public class Weapon {