From 0fcbf4da8f1245f4d711fc28914b06f582f93307 Mon Sep 17 00:00:00 2001 From: Guilherme Felipe Date: Tue, 23 Apr 2019 12:08:16 -0300 Subject: [PATCH] [StateMachine] Fix play position Continuation of 771fbd282a3e98aa487878b9b6fac8d891074e65 --- editor/plugins/animation_state_machine_editor.cpp | 8 ++++++-- editor/plugins/animation_state_machine_editor.h | 1 + 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/editor/plugins/animation_state_machine_editor.cpp b/editor/plugins/animation_state_machine_editor.cpp index 567c336effe..f06b4b2828e 100644 --- a/editor/plugins/animation_state_machine_editor.cpp +++ b/editor/plugins/animation_state_machine_editor.cpp @@ -874,7 +874,7 @@ void AnimationNodeStateMachineEditor::_state_machine_pos_draw() { } to.y = from.y; - float len = MAX(0.0001, playback->get_current_length()); + float len = MAX(0.0001, current_length); float pos = CLAMP(play_pos, 0, len); float c = pos / len; @@ -1012,6 +1012,7 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) { StringName current_node; StringName blend_from_node; play_pos = 0; + current_length = 0; if (playback.is_valid()) { tp = playback->get_travel_path(); @@ -1019,6 +1020,7 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) { current_node = playback->get_current_node(); blend_from_node = playback->get_blend_from_node(); play_pos = playback->get_current_play_pos(); + current_length = playback->get_current_length(); } { @@ -1060,8 +1062,10 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) { } // when current_node is a state machine, use playback of current_node to set play_pos - if (current_node_playback.is_valid()) + if (current_node_playback.is_valid()) { play_pos = current_node_playback->get_current_play_pos(); + current_length = current_node_playback->get_current_length(); + } } } diff --git a/editor/plugins/animation_state_machine_editor.h b/editor/plugins/animation_state_machine_editor.h index 135aff9027f..8b0a5a0b00b 100644 --- a/editor/plugins/animation_state_machine_editor.h +++ b/editor/plugins/animation_state_machine_editor.h @@ -161,6 +161,7 @@ class AnimationNodeStateMachineEditor : public AnimationTreeNodeEditorPlugin { Vector last_travel_path; float last_play_pos; float play_pos; + float current_length; float error_time; String error_text;