diff options
author | kobewi <kobewi4e@gmail.com> | 2022-03-22 17:39:01 +0100 |
---|---|---|
committer | kobewi <kobewi4e@gmail.com> | 2022-03-29 13:34:05 +0200 |
commit | e04ae8c8bcabfd5f9e66544090f9921bfc15e0ad (patch) | |
tree | 331b98c1ae24446edf7be68aa1ca1d79b0d54b84 /scene | |
parent | a30d17fe23cab95716e4b1bff9dfac21b70b5481 (diff) |
Add get_total_elapsed_time() to Tween
Diffstat (limited to 'scene')
-rw-r--r-- | scene/animation/tween.cpp | 8 | ||||
-rw-r--r-- | scene/animation/tween.h | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/scene/animation/tween.cpp b/scene/animation/tween.cpp index a2fed718be..eec265a827 100644 --- a/scene/animation/tween.cpp +++ b/scene/animation/tween.cpp @@ -130,6 +130,7 @@ void Tween::stop() { started = false; running = false; dead = false; + total_time = 0; } void Tween::pause() { @@ -272,12 +273,14 @@ bool Tween::step(float p_delta) { ERR_FAIL_COND_V_MSG(tweeners.is_empty(), false, "Tween started, but has no Tweeners."); current_step = 0; loops_done = 0; + total_time = 0; start_tweeners(); started = true; } float rem_delta = p_delta * speed_scale; bool step_active = false; + total_time += rem_delta; while (rem_delta > 0 && running) { float step_delta = rem_delta; @@ -346,6 +349,10 @@ Node *Tween::get_bound_node() const { } } +float Tween::get_total_time() const { + return total_time; +} + real_t Tween::run_equation(TransitionType p_trans_type, EaseType p_ease_type, real_t p_time, real_t p_initial, real_t p_delta, real_t p_duration) { if (p_duration == 0) { // Special case to avoid dividing by 0 in equations. @@ -624,6 +631,7 @@ void Tween::_bind_methods() { ClassDB::bind_method(D_METHOD("pause"), &Tween::pause); ClassDB::bind_method(D_METHOD("play"), &Tween::play); ClassDB::bind_method(D_METHOD("kill"), &Tween::kill); + ClassDB::bind_method(D_METHOD("get_total_elapsed_time"), &Tween::get_total_time); ClassDB::bind_method(D_METHOD("is_running"), &Tween::is_running); ClassDB::bind_method(D_METHOD("is_valid"), &Tween::is_valid); diff --git a/scene/animation/tween.h b/scene/animation/tween.h index 5b0745b2b3..648a4ca409 100644 --- a/scene/animation/tween.h +++ b/scene/animation/tween.h @@ -103,6 +103,7 @@ private: ObjectID bound_node; Vector<List<Ref<Tweener>>> tweeners; + float total_time = 0; int current_step = -1; int loops = 1; int loops_done = 0; @@ -166,6 +167,7 @@ public: bool step(float p_delta); bool can_process(bool p_tree_paused) const; Node *get_bound_node() const; + float get_total_time() const; Tween() {} }; |