Skip to content

Commit 60135bd

Browse files
committed
Kill and clear all subtweens when their parent tween is killed or cleared respectively
1 parent efb40c1 commit 60135bd

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

scene/animation/tween.cpp

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,16 @@ void Tween::kill() {
200200
running = false; // For the sake of is_running().
201201
valid = false;
202202
dead = true;
203+
204+
// Kill all subtweens of this tween.
205+
for (List<Ref<Tweener>> &tweener : tweeners) {
206+
for (Ref<Tweener> &indiv_tweener : tweener) {
207+
SubtweenTweener *as_subtween_tweener = Object::cast_to<SubtweenTweener>(indiv_tweener.ptr());
208+
if (as_subtween_tweener) {
209+
as_subtween_tweener->subtween->kill();
210+
}
211+
}
212+
}
203213
}
204214

205215
bool Tween::is_running() {
@@ -212,6 +222,16 @@ bool Tween::is_valid() {
212222

213223
void Tween::clear() {
214224
valid = false;
225+
226+
// Clear all subtweens of this tween.
227+
for (List<Ref<Tweener>> &tweener : tweeners) {
228+
for (Ref<Tweener> &indiv_tweener : tweener) {
229+
SubtweenTweener *as_subtween_tweener = Object::cast_to<SubtweenTweener>(indiv_tweener.ptr());
230+
if (as_subtween_tweener) {
231+
as_subtween_tweener->subtween->clear();
232+
}
233+
}
234+
}
215235
tweeners.clear();
216236
}
217237

0 commit comments

Comments
 (0)