[3.x] Fix Tween.is_active() always true after stop() and then start() (Fix #39760 & #39801) #47142
+16
−1
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.
Fix #39760 & #39801 for 3.2 branch
These issues were fixed in 4.0 master branch (and closed) but are still active in the 3.2 branch.
Issues :
Cause :
When a tween was stopped, each interpolation in the list was set to active=false
then, the main active bool was set to false.
When starting the tween again, the main active bool was set to true but not each interpolation in the list : so no repeat was happening.
Fix proposal : (Backport from my previous merged PR #46609 for 4.0)
I've added a for loop to reactivate each interpolation in the interpolates list when start() is called.
Need to seek to 0.0 too (only if tween has been stopped by stop_all()) because we don't want start() to act as resume() after stop_all().