From a89e744ed0e8c759caf041a580112365bbfe4303 Mon Sep 17 00:00:00 2001 From: radiohotline Date: Tue, 25 Aug 2026 16:33:56 +0300 Subject: escoria update --- addons/escoria-core/game/tween3.gd | 56 +++++++++++++++++++++++++------------- 1 file changed, 37 insertions(+), 19 deletions(-) (limited to 'addons/escoria-core/game/tween3.gd') diff --git a/addons/escoria-core/game/tween3.gd b/addons/escoria-core/game/tween3.gd index 88a3e8a..ee8f07a 100644 --- a/addons/escoria-core/game/tween3.gd +++ b/addons/escoria-core/game/tween3.gd @@ -1,7 +1,27 @@ ## In Godot 4, tweens cannot be resumed. But if you re-create them,[br] ## the bindings are lost. So this class wraps a tween and offers a reset function. -extends RefCounted class_name Tween3 +extends RefCounted + + +## Emitted when the tween finishes.[br] +## [br] +## #### Parameters[br] +## [br] +## None. +## [br] +signal finished() + + +## The parent node for the tween. +var _tween_parent: Node + +## The Tween instance being managed. +var _tween: Tween + +## The duration of the tween. +var _duration: float + ## Interpolates a property on an object using a tween.[br] ## [br] @@ -44,23 +64,6 @@ static func tween_interpolate_property( return true -## The parent node for the tween. -var _tween_parent: Node - -## The Tween instance being managed. -var _tween: Tween - -## The duration of the tween. -var _duration: float - -## Emitted when the tween finishes.[br] -## [br] -## #### Parameters[br] -## [br] -## None. -## [br] -signal finished() - ## Called when the tween finishes.[br] ## [br] ## #### Parameters[br] @@ -100,7 +103,22 @@ func _init(tween_parent: Node): ## [br] ## Returns nothing. func _create_tween(): - _tween = _tween_parent.get_tree().create_tween() + var tree = _tween_parent.get_tree() + if tree == null: + escoria.logger.error( + self, + "Tween3: Parent node is not in the scene tree. Cannot create tween." + ) + return + + _tween = tree.create_tween() + if _tween == null: + escoria.logger.error( + self, + "Tween3: Failed to create tween." + ) + return + _tween.pause() # prevent autoplay _tween.finished.connect(_on_finished) -- cgit v1.3