summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorbowling-allie <allie.smith.epic@gmail.com>2021-05-01 20:36:43 -0700
committerbowling-allie <allie.smith.epic@gmail.com>2021-05-06 18:25:59 -0700
commitbcb1e2b79f51d23ce56e76352b7e18ae2632fe98 (patch)
tree49d358f2fc96c1b2ae688bea834414b6e6abda06
parent33a0fb6e02ce9ee5d2fe97377a3ec84591b59f7c (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.cpp4
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;