Merge pull request #96216 from BlackShift/master
Fix Tweeners to emit `finished()` when underlying object is deleted
This commit is contained in:
commit
7d9ab705c9
|
@ -5,6 +5,7 @@
|
|||
</brief_description>
|
||||
<description>
|
||||
[PropertyTweener] is used to interpolate a property in an object. See [method Tween.tween_property] for more usage information.
|
||||
The tweener will finish automatically if the target object is freed.
|
||||
[b]Note:[/b] [method Tween.tween_property] is the only correct way to create [PropertyTweener]. Any [PropertyTweener] created manually will not function correctly.
|
||||
</description>
|
||||
<tutorials>
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
<signals>
|
||||
<signal name="finished">
|
||||
<description>
|
||||
Emitted when the [Tweener] has just finished its job.
|
||||
Emitted when the [Tweener] has just finished its job or became invalid (e.g. due to a freed object).
|
||||
</description>
|
||||
</signal>
|
||||
</signals>
|
||||
|
|
|
@ -579,6 +579,7 @@ bool PropertyTweener::step(double &r_delta) {
|
|||
|
||||
Object *target_instance = ObjectDB::get_instance(target);
|
||||
if (!target_instance) {
|
||||
_finish();
|
||||
return false;
|
||||
}
|
||||
elapsed_time += r_delta;
|
||||
|
@ -706,6 +707,7 @@ bool CallbackTweener::step(double &r_delta) {
|
|||
}
|
||||
|
||||
if (!callback.is_valid()) {
|
||||
_finish();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
@ -770,6 +772,7 @@ bool MethodTweener::step(double &r_delta) {
|
|||
}
|
||||
|
||||
if (!callback.is_valid()) {
|
||||
_finish();
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue