From 7e07d4781a934979c62670bcb7b1f1f4347d5bb0 Mon Sep 17 00:00:00 2001 From: Haoyu Qiu Date: Mon, 28 Feb 2022 16:00:45 +0800 Subject: [PATCH] Fix AnimatedSprite infinite loop (cherry picked from commit 3a439a9c0378d0c6f7d8ce67084863abbe4e87bc) --- scene/2d/animated_sprite.cpp | 10 +++++----- scene/3d/sprite_3d.cpp | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/scene/2d/animated_sprite.cpp b/scene/2d/animated_sprite.cpp index 2fb70038bfa..f18265ba8d9 100644 --- a/scene/2d/animated_sprite.cpp +++ b/scene/2d/animated_sprite.cpp @@ -364,14 +364,14 @@ void AnimatedSprite::_notification(int p_what) { return; } - float speed = frames->get_animation_speed(animation) * speed_scale; - if (speed == 0) { - return; //do nothing - } - float remaining = get_process_delta_time(); while (remaining) { + float speed = frames->get_animation_speed(animation) * speed_scale; + if (speed == 0) { + return; //do nothing + } + if (timeout <= 0) { timeout = _get_frame_duration(); diff --git a/scene/3d/sprite_3d.cpp b/scene/3d/sprite_3d.cpp index f0fbcfd332b..5633f9c4cd6 100644 --- a/scene/3d/sprite_3d.cpp +++ b/scene/3d/sprite_3d.cpp @@ -980,14 +980,14 @@ void AnimatedSprite3D::_notification(int p_what) { return; } - float speed = frames->get_animation_speed(animation); - if (speed == 0) { - return; //do nothing - } - float remaining = get_process_delta_time(); while (remaining) { + float speed = frames->get_animation_speed(animation); + if (speed == 0) { + return; // Do nothing. + } + if (timeout <= 0) { timeout = 1.0 / speed;