Only trigger state transitons if next_state != old_state
#8359
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Objective
Fix #8191.
Currently, a state transition will be triggered whenever the
NextState
resource has a value, even if that "transition" is to the same state as the previous one. This caused surprising/meaningless behavior, such as the existence of anOnTransition { from: A, to: A }
schedule.Solution
State transition schedules now only run if the new state is not equal to the old state. Change detection works the same way, only being triggered when the states compare not equal.
Changelog
Migration Guide
State transitions are now only triggered when the exited and entered state differ. This means that if the world is currently in state
A
, theOnEnter(A)
schedule (orOnExit
) will no longer be run if you queue up a state transition to the same stateA
.