Add animation_finished signal and fix frame_changed signal for AnimatedSprite3D
Fixes #40301. Fixes #45947.
This commit is contained in:
parent
ab4f5c0668
commit
c3be0c2c04
|
@ -49,6 +49,11 @@
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
<signals>
|
<signals>
|
||||||
|
<signal name="animation_finished">
|
||||||
|
<description>
|
||||||
|
Emitted when the animation is finished (when it plays the last frame). If the animation is looping, this signal is emitted every time the last frame is drawn.
|
||||||
|
</description>
|
||||||
|
</signal>
|
||||||
<signal name="frame_changed">
|
<signal name="frame_changed">
|
||||||
<description>
|
<description>
|
||||||
Emitted when [member frame] changed.
|
Emitted when [member frame] changed.
|
||||||
|
|
|
@ -888,11 +888,13 @@ void AnimatedSprite3D::_notification(int p_what) {
|
||||||
} else {
|
} else {
|
||||||
frame = fc - 1;
|
frame = fc - 1;
|
||||||
}
|
}
|
||||||
|
emit_signal(SceneStringNames::get_singleton()->animation_finished);
|
||||||
} else {
|
} else {
|
||||||
frame++;
|
frame++;
|
||||||
}
|
}
|
||||||
|
|
||||||
_queue_update();
|
_queue_update();
|
||||||
|
emit_signal(SceneStringNames::get_singleton()->frame_changed);
|
||||||
}
|
}
|
||||||
|
|
||||||
float to_process = MIN(timeout, remaining);
|
float to_process = MIN(timeout, remaining);
|
||||||
|
@ -1082,6 +1084,7 @@ void AnimatedSprite3D::_bind_methods() {
|
||||||
ClassDB::bind_method(D_METHOD("get_frame"), &AnimatedSprite3D::get_frame);
|
ClassDB::bind_method(D_METHOD("get_frame"), &AnimatedSprite3D::get_frame);
|
||||||
|
|
||||||
ADD_SIGNAL(MethodInfo("frame_changed"));
|
ADD_SIGNAL(MethodInfo("frame_changed"));
|
||||||
|
ADD_SIGNAL(MethodInfo("animation_finished"));
|
||||||
|
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "frames", PROPERTY_HINT_RESOURCE_TYPE, "SpriteFrames"), "set_sprite_frames", "get_sprite_frames");
|
ADD_PROPERTY(PropertyInfo(Variant::OBJECT, "frames", PROPERTY_HINT_RESOURCE_TYPE, "SpriteFrames"), "set_sprite_frames", "get_sprite_frames");
|
||||||
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "animation"), "set_animation", "get_animation");
|
ADD_PROPERTY(PropertyInfo(Variant::STRING_NAME, "animation"), "set_animation", "get_animation");
|
||||||
|
|
Loading…
Reference in a new issue