I am running into a certain state tree behavior and I don’t know if it’s intentional. Let’s say I have a basic state tree like this:
[Root]
→ [Combat]
–→ [Move To Target]
–→ [Attack Target]
→ [Roaming]
–→ [Move To New Location]
–→ [Idle]
[Roaming] has On Event transition to [Combat], which is triggered by an Combat.Entered event.
[Move To New Location] has On State Completed transition to [Idle].
[Idle] has On State Completed transition to [Move To New Location].
When Combat.Entered event is triggered and we’re in [Move To New Location] state, I expect to transition directly to [Combat]. However, what happens, the Rewind Debugger, is that [Move To New Location] transitions to [Idle] and then immediately that transitions to [Combat]. So, [Move To New Location]’s completion in this scenario triggers its On State Completed transition, but then the On Event transition finally transitions to [Combat].
So, is is this an expected behavior? I just happened to notice that this is happening in the Rewind Debugger. And what’s more weird is that it’s not even showing me many details in the debugger, besides “Send Event ”:
And then immediately after that:
I set a state entry breakpoint in [Idle] state, but it’s not triggered when combat event occurs. Additionally, if I disable the On State Completed transition from [Move To New Location] to [Idle], I don’t see this behavior (obviously).
So, the debugger shows that we’re in [Idle] momentarily, but doesn’t provide any details, besides that the event was called, and entry breakpoint is not triggered.

