Merge pull request #70572 from TokageItLab/fix-statemachine-fade
Fix wrong `AnimationStateMachine` process for end of fading
This commit is contained in:
commit
c5279420c8
@ -415,9 +415,6 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
|
|||||||
fading_pos += p_time;
|
fading_pos += p_time;
|
||||||
}
|
}
|
||||||
fade_blend = MIN(1.0, fading_pos / fading_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 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()) {
|
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.
|
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
|
//guess playback position
|
||||||
|
Loading…
Reference in New Issue
Block a user