From 2e1b1234a339e5aa651b6462fe03461c65c98bc4 Mon Sep 17 00:00:00 2001 From: Josh Grams Date: Mon, 7 Mar 2016 17:21:07 -0500 Subject: TimeScale node: scale return value (time remaining). --- scene/animation/animation_tree_player.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp index b07611b318..67c7eae1bf 100644 --- a/scene/animation/animation_tree_player.cpp +++ b/scene/animation/animation_tree_player.cpp @@ -637,10 +637,12 @@ float AnimationTreePlayer::_process_node(const StringName& p_node,AnimationNode } break; case NODE_TIMESCALE: { TimeScaleNode *tsn = static_cast(nb); + float rem; if (p_seek) - return _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time,switched,true,p_filter,p_reverse_weight); + rem = _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time,switched,true,p_filter,p_reverse_weight); else - return _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time*tsn->scale,switched,false,p_filter,p_reverse_weight); + rem = _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time*tsn->scale,switched,false,p_filter,p_reverse_weight); + return rem / tsn->scale; } break; case NODE_TIMESEEK: { -- cgit v1.2.3 From 65b7791263e8e20f83b6b7fbfd30329a0e4e9a4f Mon Sep 17 00:00:00 2001 From: Josh Grams Date: Tue, 8 Mar 2016 07:16:25 -0500 Subject: TimeScale node: return +inf remaining for 0 scale. --- scene/animation/animation_tree_player.cpp | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp index 67c7eae1bf..6d45135ca2 100644 --- a/scene/animation/animation_tree_player.cpp +++ b/scene/animation/animation_tree_player.cpp @@ -642,7 +642,10 @@ float AnimationTreePlayer::_process_node(const StringName& p_node,AnimationNode rem = _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time,switched,true,p_filter,p_reverse_weight); else rem = _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time*tsn->scale,switched,false,p_filter,p_reverse_weight); - return rem / tsn->scale; + if (tsn->scale == 0) + return INFINITY; + else + return rem / tsn->scale; } break; case NODE_TIMESEEK: { -- cgit v1.2.3