Skip to content

Commit

Permalink
Merge pull request #24796 from guilhermefelipecgs/fix_play_pos_sm
Browse files Browse the repository at this point in the history
Show play position of sub state machine
  • Loading branch information
hpvb committed Apr 23, 2019
2 parents a033c68 + 771fbd2 commit 2ea7576
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 2 deletions.
23 changes: 21 additions & 2 deletions editor/plugins/animation_state_machine_editor.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -876,7 +876,7 @@ void AnimationNodeStateMachineEditor::_state_machine_pos_draw() {

float len = MAX(0.0001, playback->get_current_length());

float pos = CLAMP(playback->get_current_play_pos(), 0, len);
float pos = CLAMP(play_pos, 0, len);
float c = pos / len;
Color fg = get_color("font_color", "Label");
Color bg = fg;
Expand Down Expand Up @@ -1011,7 +1011,7 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) {
bool is_playing = false;
StringName current_node;
StringName blend_from_node;
float play_pos = 0;
play_pos = 0;

if (playback.is_valid()) {
tp = playback->get_travel_path();
Expand Down Expand Up @@ -1046,6 +1046,25 @@ void AnimationNodeStateMachineEditor::_notification(int p_what) {
state_machine_play_pos->update();
}

{
if (current_node != StringName() && state_machine->has_node(current_node)) {

String next = current_node;
Ref<AnimationNodeStateMachine> anodesm = state_machine->get_node(next);
Ref<AnimationNodeStateMachinePlayback> current_node_playback;

while (anodesm.is_valid()) {
current_node_playback = AnimationTreeEditor::get_singleton()->get_tree()->get(AnimationTreeEditor::get_singleton()->get_base_path() + next + "/playback");
next += "/" + current_node_playback->get_current_node();
anodesm = anodesm->get_node(current_node_playback->get_current_node());
}

// when current_node is a state machine, use playback of current_node to set play_pos
if (current_node_playback.is_valid())
play_pos = current_node_playback->get_current_play_pos();
}
}

if (last_play_pos != play_pos) {

last_play_pos = play_pos;
Expand Down
1 change: 1 addition & 0 deletions editor/plugins/animation_state_machine_editor.h
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ class AnimationNodeStateMachineEditor : public AnimationTreeNodeEditorPlugin {
StringName last_current_node;
Vector<StringName> last_travel_path;
float last_play_pos;
float play_pos;

float error_time;
String error_text;
Expand Down

0 comments on commit 2ea7576

Please sign in to comment.