I was wondering why the Player script handles the OnFire() event rather than the Shooter script. Both scripts are components of the Player prefab and can therefore listen to the input system callbacks. If the OnFire() event is in the Shooter script then there is no need to have the public boolean isFiring and we have a looser coupling between Shooter and Player scripts. Both methods work, as far as I have tried. I am just interested if there is a benefit that I have missed in implementing the OnFire in the Player script.
Just thinking about this further I have realized that if we want to reuse the shooter script on the enemy then they need another mechanism to start and stop firing and will not use the OnFire() event…
Just answered my own question