diff options
author | Silc Renew <tokage.it.lab@gmail.com> | 2022-12-26 08:29:13 +0900 |
---|---|---|
committer | Silc Renew <tokage.it.lab@gmail.com> | 2022-12-26 13:08:08 +0900 |
commit | 74e0903bb8117215acaef45c627101d49961c489 (patch) | |
tree | 28870ecfb099aeed2577ecd31e5c249b9b23d97e | |
parent | f382a2b59bb9606f958ccaf7be7ac98f45607c9f (diff) |
Fix wrong AnimationStateMachine process for end of fading
-rw-r--r-- | scene/animation/animation_node_state_machine.cpp | 8 |
1 files changed, 4 insertions, 4 deletions
diff --git a/scene/animation/animation_node_state_machine.cpp b/scene/animation/animation_node_state_machine.cpp index d54740e9b0..4c677b6a9f 100644 --- a/scene/animation/animation_node_state_machine.cpp +++ b/scene/animation/animation_node_state_machine.cpp @@ -415,9 +415,6 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s fading_pos += p_time; } fade_blend = MIN(1.0, fading_pos / fading_time); - if (fade_blend > 1.0) { - fading_from = StringName(); - } } } @@ -426,9 +423,12 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s } double rem = p_state_machine->blend_node(current, p_state_machine->states[current].node, p_time, p_seek, p_is_external_seeking, Math::is_zero_approx(fade_blend) ? CMP_EPSILON : fade_blend, AnimationNode::FILTER_IGNORE, true); // Blend values must be more than CMP_EPSILON to process discrete keys in edge. - double fade_blend_inv = 1.0 - fade_blend; if (fading_from != StringName()) { + double fade_blend_inv = 1.0 - fade_blend; p_state_machine->blend_node(fading_from, p_state_machine->states[fading_from].node, p_time, p_seek, p_is_external_seeking, Math::is_zero_approx(fade_blend_inv) ? CMP_EPSILON : fade_blend_inv, AnimationNode::FILTER_IGNORE, true); // Blend values must be more than CMP_EPSILON to process discrete keys in edge. + if (fade_blend >= 1.0) { + fading_from = StringName(); + } } //guess playback position |