After running into a 2 hour bug, I just discovered the answer to my questions.
Here’s how that atomic button works.
Say I have 3 states: A, B, and C where A has a transition to B and B has a transition to C.
So essentially I just have A → B → C.
If the transition from A to B is atomic, and in the middle of the transition from A to B the transition from B to C becomes true, then the transition to C will NOT happen. (This was my bug.)
If the transition from A to B is NOT atomic, and in the middle of the transition from A to B the transition from B to C becomes true, then we will happily transition to C.
In other words, if a transition in NOT atomic, you can consider yourself to already be at the state your transitioning to. If a transition is atomic, then all the transitions leaving the state you’re transitioning to will be ignored because you’re not completely at that state yet.
What can interrupt a transition?
Any transition leaving the state you’re currently transitioning to.
If I make a transition atomic, do the actions that would have interrupted the transition just get discarded as if they never happened?
A: other transition from same state with higher priority.
2.If I make a transition atomic, do the actions that would have interrupted the transition just get discarded as if they never happened?
A: Yes.
// – Explain below – //
A state could contains several transitions, during the transition from this state, another transition from same state with higher priority could be satisfied and happen.
I tried a demo and it works:
I have 3 states: A, B, C and 2 transition A->B, A->C, the transition A->C is higher priority than the transition A->B.
During the transition A->B, the transition A->C is satisfied, if transition A->B is atomic, the transition A->C would not happen, but if transition A->B is NOT atomic, the transition A->C would interrupt and replace the transition A->B.