Add animation_started/finished signals to AnimationTree
This commit is contained in:
parent
2a04b18d37
commit
4cd144d5fb
5 changed files with 39 additions and 8 deletions
|
|
@ -379,6 +379,7 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
|
|||
// can't travel, then teleport
|
||||
path.clear();
|
||||
current = start_request;
|
||||
play_start = true;
|
||||
}
|
||||
start_request = StringName(); //clear start request
|
||||
}
|
||||
|
|
@ -424,7 +425,7 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
|
|||
fading_pos += p_time;
|
||||
}
|
||||
fade_blend = MIN(1.0, fading_pos / fading_time);
|
||||
if (fade_blend >= 1.0) {
|
||||
if (fade_blend > 1.0) {
|
||||
fading_from = StringName();
|
||||
}
|
||||
}
|
||||
|
|
@ -433,9 +434,9 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
|
|||
if (current_curve.is_valid()) {
|
||||
fade_blend = current_curve->sample(fade_blend);
|
||||
}
|
||||
float 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.
|
||||
|
||||
float fade_blend_inv = 1.0 - fade_blend;
|
||||
double fade_blend_inv = 1.0 - fade_blend;
|
||||
if (fading_from != StringName()) {
|
||||
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.
|
||||
}
|
||||
|
|
@ -446,14 +447,14 @@ double AnimationNodeStateMachinePlayback::process(AnimationNodeStateMachine *p_s
|
|||
}
|
||||
|
||||
{ //advance and loop check
|
||||
float next_pos = len_current - rem;
|
||||
double next_pos = len_current - rem;
|
||||
end_loop = next_pos < pos_current;
|
||||
pos_current = next_pos; //looped
|
||||
}
|
||||
|
||||
//find next
|
||||
StringName next;
|
||||
float next_xfade = 0.0;
|
||||
double next_xfade = 0.0;
|
||||
AnimationNodeStateMachineTransition::SwitchMode switch_mode = AnimationNodeStateMachineTransition::SWITCH_MODE_IMMEDIATE;
|
||||
|
||||
if (path.size()) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue