Merge pull request #108227 from Meorge/bugfix/kill-subtweens

Propagate `Tween.kill()` to subtweens
This commit is contained in:
Thaddeus Crews 2025-10-07 11:54:29 -05:00
commit a1974604fe
No known key found for this signature in database
GPG key ID: 8C6E5FEB5FC03CCC
2 changed files with 7 additions and 0 deletions

View file

@ -164,6 +164,7 @@ Ref<SubtweenTweener> Tween::tween_subtween(const Ref<Tween> &p_subtween) {
if (tweener->subtween->parent_tree != nullptr) { if (tweener->subtween->parent_tree != nullptr) {
tweener->subtween->parent_tree->remove_tween(tweener->subtween); tweener->subtween->parent_tree->remove_tween(tweener->subtween);
} }
subtweens.push_back(p_subtween);
append(tweener); append(tweener);
return tweener; return tweener;
} }
@ -200,6 +201,11 @@ void Tween::kill() {
running = false; // For the sake of is_running(). running = false; // For the sake of is_running().
valid = false; valid = false;
dead = true; dead = true;
// Kill all subtweens of this tween.
for (Ref<Tween> &st : subtweens) {
st->kill();
}
} }
bool Tween::is_running() { bool Tween::is_running() {

View file

@ -112,6 +112,7 @@ private:
SceneTree *parent_tree = nullptr; SceneTree *parent_tree = nullptr;
LocalVector<List<Ref<Tweener>>> tweeners; LocalVector<List<Ref<Tweener>>> tweeners;
LocalVector<Ref<Tween>> subtweens;
double total_time = 0; double total_time = 0;
int current_step = -1; int current_step = -1;
int loops = 1; int loops = 1;