diff options
author | Rémi Verschelde <remi@verschelde.fr> | 2016-03-09 20:17:13 +0100 |
---|---|---|
committer | Rémi Verschelde <remi@verschelde.fr> | 2016-03-09 20:17:13 +0100 |
commit | 6ef3c3b6458f6d3156cdcfc6b906b8dba4c91a2b (patch) | |
tree | 5656fdf9d19f7c739786699278caee9304794d54 /scene/animation/animation_tree_player.cpp | |
parent | c0a6df53a8cbd31a0c47aaa2d57803f6950941f4 (diff) | |
parent | 65b7791263e8e20f83b6b7fbfd30329a0e4e9a4f (diff) | |
download | redot-engine-6ef3c3b6458f6d3156cdcfc6b906b8dba4c91a2b.tar.gz |
Merge pull request #3980 from JoshuaGrams/timescale-remainder
TimeScale node: scale return value (time remaining).
Diffstat (limited to 'scene/animation/animation_tree_player.cpp')
-rw-r--r-- | scene/animation/animation_tree_player.cpp | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/scene/animation/animation_tree_player.cpp b/scene/animation/animation_tree_player.cpp index cc9e6c71e3..9dcad8a533 100644 --- a/scene/animation/animation_tree_player.cpp +++ b/scene/animation/animation_tree_player.cpp @@ -637,10 +637,15 @@ float AnimationTreePlayer::_process_node(const StringName& p_node,AnimationNode } break; case NODE_TIMESCALE: { TimeScaleNode *tsn = static_cast<TimeScaleNode*>(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 + rem = _process_node(tsn->inputs[0].node,r_prev_anim,p_weight,p_time*tsn->scale,switched,false,p_filter,p_reverse_weight); + if (tsn->scale == 0) + return INFINITY; else - return _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: { |