diff options
author | Guilherme Felipe <guilhermefelipecgs@gmail.com> | 2019-04-23 12:08:16 -0300 |
---|---|---|
committer | Guilherme Felipe <guilhermefelipecgs@gmail.com> | 2019-04-23 14:59:16 -0300 |
commit | 0fcbf4da8f1245f4d711fc28914b06f582f93307 (patch) | |
tree | f25747310dbda29b64445f295f6819947d9db0d1 | |
parent | b0da7b66ce278179eedd0e21dae1d84ed3f4459d (diff) |
[StateMachine] Fix play position
Continuation of 771fbd282a3e98aa487878b9b6fac8d891074e65
-rw-r--r-- | editor/plugins/animation_state_machine_editor.cpp | 8 | ||||
-rw-r--r-- | 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 567c336eff..f06b4b2828 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 135aff9027..8b0a5a0b00 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<StringName> last_travel_path; float last_play_pos; float play_pos; + float current_length; float error_time; String error_text; |