I know that there are always different ways of designing things and I'm interested to hear what others do and why they prefer one over the other.
In this case I'm developing an Audio Manager and I'm between these two options:
1. Have an FSM with many global transitions, each for the specific sound I want to trigger. For example I have "Button Tap" and I would simply send the event Button Tap, be it with the action "Send Event" with global events or "Send Event by Name" for local events (which I am not sure either what is better).
VS.
2. Have an FSM with only one global transition called "Play Audio" and every time I send this event I also would either use "Set Event Data" and "Get Event Info" or I directly would use "Set FSM Enum". In either case I then would do a Enum Switch to a separate state where I play each corresponding sound.
Is there a third method I should consider? And which one should I use and why?
I'm mostly interested in the most performant and fastest setup but also want it to be as flexible as possible to use it in many different games.