Jelajahi Sumber

Added signal for Tween emitted at completion

Chaosus 6 tahun lalu
induk
melakukan
a19e99aacb
2 mengubah file dengan 9 tambahan dan 1 penghapusan
  1. 5 0
      doc/classes/Tween.xml
  2. 4 1
      scene/animation/tween.cpp

+ 5 - 0
doc/classes/Tween.xml

@@ -350,6 +350,11 @@
 		</member>
 	</members>
 	<signals>
+		<signal name="tween_all_completed">
+			<description>
+				Emitted when all processes in a tween end.
+			</description>
+		</signal>
 		<signal name="tween_completed">
 			<argument index="0" name="object" type="Object">
 			</argument>

+ 4 - 1
scene/animation/tween.cpp

@@ -223,6 +223,7 @@ void Tween::_bind_methods() {
 	ADD_SIGNAL(MethodInfo("tween_started", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key")));
 	ADD_SIGNAL(MethodInfo("tween_step", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key"), PropertyInfo(Variant::REAL, "elapsed"), PropertyInfo(Variant::OBJECT, "value")));
 	ADD_SIGNAL(MethodInfo("tween_completed", PropertyInfo(Variant::OBJECT, "object"), PropertyInfo(Variant::NODE_PATH, "key")));
+	ADD_SIGNAL(MethodInfo("tween_all_completed"));
 
 	ADD_PROPERTY(PropertyInfo(Variant::BOOL, "repeat"), "set_repeat", "is_repeat");
 	ADD_PROPERTY(PropertyInfo(Variant::INT, "playback_process_mode", PROPERTY_HINT_ENUM, "Physics,Idle"), "set_tween_process_mode", "get_tween_process_mode");
@@ -628,8 +629,10 @@ void Tween::_tween_process(float p_delta) {
 	}
 	pending_update--;
 
-	if (all_finished)
+	if (all_finished) {
 		set_active(false);
+		emit_signal("tween_all_completed");
+	}
 }
 
 void Tween::set_tween_process_mode(TweenProcessMode p_mode) {