summaryrefslogtreecommitdiff
path: root/scene
diff options
context:
space:
mode:
authorrobfram <robfram@gmail.com>2018-03-01 19:52:00 +0100
committerrobfram <robfram@gmail.com>2018-03-03 09:29:22 +0100
commit5ef88cf577ad45b4dece733f1bb1350f7c93547e (patch)
treebf85ff8b26bf9109b1ddf414fe7c66e93b1d6ecc /scene
parent741af0652dd3e5992654ef401f04f9f461e1d0c5 (diff)
Added `get_playing_speed` method to AnimationPlayer, returning the actual
playing speed of the animation being played. As stated in #16550, there is no way to get the playing speed of an animation. The `playback_speed` property is for the whole AnimationPlayer node, and the argument passed to `play` method is another scale applied in top of the AnimationPlayer properties. Thus, the actual playing speed is AnimationPlayer.speed_scale * AnimationPlayer.playback.current.speed_scale. If it is not playing, the method returns 0.
Diffstat (limited to 'scene')
-rw-r--r--scene/animation/animation_player.cpp8
-rw-r--r--scene/animation/animation_player.h1
2 files changed, 9 insertions, 0 deletions
diff --git a/scene/animation/animation_player.cpp b/scene/animation/animation_player.cpp
index 9db4a5fb04..859c40701e 100644
--- a/scene/animation/animation_player.cpp
+++ b/scene/animation/animation_player.cpp
@@ -1024,6 +1024,13 @@ float AnimationPlayer::get_speed_scale() const {
return speed_scale;
}
+float AnimationPlayer::get_playing_speed() const {
+
+ if (!playing) {
+ return 0;
+ }
+ return speed_scale * playback.current.speed_scale;
+}
void AnimationPlayer::seek(float p_time, bool p_update) {
@@ -1315,6 +1322,7 @@ void AnimationPlayer::_bind_methods() {
ClassDB::bind_method(D_METHOD("set_speed_scale", "speed"), &AnimationPlayer::set_speed_scale);
ClassDB::bind_method(D_METHOD("get_speed_scale"), &AnimationPlayer::get_speed_scale);
+ ClassDB::bind_method(D_METHOD("get_playing_speed"), &AnimationPlayer::get_playing_speed);
ClassDB::bind_method(D_METHOD("set_autoplay", "name"), &AnimationPlayer::set_autoplay);
ClassDB::bind_method(D_METHOD("get_autoplay"), &AnimationPlayer::get_autoplay);
diff --git a/scene/animation/animation_player.h b/scene/animation/animation_player.h
index ef758bac44..af2022ddac 100644
--- a/scene/animation/animation_player.h
+++ b/scene/animation/animation_player.h
@@ -293,6 +293,7 @@ public:
void set_speed_scale(float p_speed);
float get_speed_scale() const;
+ float get_playing_speed() const;
void set_autoplay(const String &p_name);
String get_autoplay() const;