summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRĂ©mi Verschelde <rverschelde@gmail.com>2019-04-25 13:28:58 +0200
committerGitHub <noreply@github.com>2019-04-25 13:28:58 +0200
commitcfc6ae8920359744e87d00b1336705a0ad853926 (patch)
tree3d73005bccdd9bf208675a223046cc35ea731b93
parent4ad22f81481c3c721a78dbc96d391a8f873738db (diff)
parent0fcbf4da8f1245f4d711fc28914b06f582f93307 (diff)
Merge pull request #28336 from guilhermefelipecgs/fix_play_pos
[StateMachine] Fix play position
-rw-r--r--editor/plugins/animation_state_machine_editor.cpp8
-rw-r--r--editor/plugins/animation_state_machine_editor.h1
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;