Browse Source

Improve and clarify paused Tweens

(cherry picked from commit dbecf8bd1ab800d1349c6519c9199692a4a486a7)
kobewi 2 years ago
parent
commit
f7d1f9e25b
2 changed files with 6 additions and 4 deletions
  1. 2 0
      doc/classes/Tween.xml
  2. 4 4
      scene/animation/tween.cpp

+ 2 - 0
doc/classes/Tween.xml

@@ -206,6 +206,7 @@
 			<return type="void" />
 			<description>
 				Pauses the tweening. The animation can be resumed by using [method play].
+				[b]Note:[/b] If a Tween is paused and not bound to any node, it will exist indefinitely until manually started or invalidated. If you lose a reference to such Tween, you can retrieve it using [method SceneTree.get_processed_tweens].
 			</description>
 		</method>
 		<method name="play">
@@ -273,6 +274,7 @@
 			<return type="void" />
 			<description>
 				Stops the tweening and resets the [Tween] to its initial state. This will not remove any appended [Tweener]s.
+				[b]Note:[/b] If a Tween is stopped and not bound to any node, it will exist indefinitely until manually started or invalidated. If you lose a reference to such Tween, you can retrieve it using [method SceneTree.get_processed_tweens].
 			</description>
 		</method>
 		<method name="tween_callback">

+ 4 - 4
scene/animation/tween.cpp

@@ -284,10 +284,6 @@ bool Tween::step(double p_delta) {
 		return false;
 	}
 
-	if (!running) {
-		return true;
-	}
-
 	if (is_bound) {
 		Node *node = get_bound_node();
 		if (node) {
@@ -299,6 +295,10 @@ bool Tween::step(double p_delta) {
 		}
 	}
 
+	if (!running) {
+		return true;
+	}
+
 	if (!started) {
 		if (tweeners.is_empty()) {
 			String tween_id;