State machines become very ugly to look at and difficult to manage once they reach a certain level of complexity. A major contributing factor is having a state, such as “AirIdle” that a lot of other states will need to go into. creating a myriad of connections that overlap etc.
My suggestion is to implement a proxy/pointer state that can be linked to any other state and transitioned into as if it were that state, i.e “AirIdleProxy” would be visually separate to the “AirIdle” state, however connecting a transition rule to it, or perhaps from it as well, would be functionally the same as connecting it to the “AirIdle” state.
I think this will significantly reduce the visual clutter in state machines and allow them to be the simple, visually flowing tool that they are meant to be.
I can even envision having a list of states that arent connected to anything, then using proxies to create visually separate but functionally integrated sequences.
Here is a screenshot of my current state machine, the main problem area is around “AirIdle”
Here is a quick mockup that I did to demonstrate the concept