diff options
author | bowling-allie <allie.smith.epic@gmail.com> | 2021-05-01 20:36:43 -0700 |
---|---|---|
committer | bowling-allie <allie.smith.epic@gmail.com> | 2021-05-06 18:25:59 -0700 |
commit | bcb1e2b79f51d23ce56e76352b7e18ae2632fe98 (patch) | |
tree | 49d358f2fc96c1b2ae688bea834414b6e6abda06 | |
parent | 33a0fb6e02ce9ee5d2fe97377a3ec84591b59f7c (diff) |
Fixes BlendSpace2D BLEND_MODE_DISCRETE_CARRY.
When BlendSpace2D switches animations, it will now correctly
calculate the previous animation position and length and
apply is to the new animation.
-rw-r--r-- | scene/animation/animation_blend_space_2d.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/scene/animation/animation_blend_space_2d.cpp b/scene/animation/animation_blend_space_2d.cpp index 9c4bc107dd..33e1f3583e 100644 --- a/scene/animation/animation_blend_space_2d.cpp +++ b/scene/animation/animation_blend_space_2d.cpp @@ -532,10 +532,10 @@ float AnimationNodeBlendSpace2D::process(float p_time, bool p_seek) { float from = 0.0; if (blend_mode == BLEND_MODE_DISCRETE_CARRY && closest != -1) { //see how much animation remains - from = blend_node(blend_points[closest].name, blend_points[closest].node, p_time, true, 0.0, FILTER_IGNORE, false) - length_internal; + from = length_internal - blend_node(blend_points[closest].name, blend_points[closest].node, p_time, false, 0.0, FILTER_IGNORE, false); } - mind = blend_node(blend_points[new_closest].name, blend_points[new_closest].node, from, true, 1.0, FILTER_IGNORE, false) + from; + mind = blend_node(blend_points[new_closest].name, blend_points[new_closest].node, from, true, 1.0, FILTER_IGNORE, false); length_internal = from + mind; closest = new_closest; |