diff options
author | RĂ©mi Verschelde <rverschelde@gmail.com> | 2019-05-31 10:13:30 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-05-31 10:13:30 +0200 |
commit | 0fc6b86797a8aefad9f9787110211d6a145518b1 (patch) | |
tree | 344b2e147b09aa7fe36fd51b0203eca7d2e010d5 /editor/plugins | |
parent | 7770f8cb7e9bfaf3a76e73441681e708108bfc82 (diff) | |
parent | fe98a31743ef7c453a13ce14d2d31c1b1c5de919 (diff) |
Merge pull request #29329 from volzhs/fix-animation-player
Fix animation player
Diffstat (limited to 'editor/plugins')
-rw-r--r-- | editor/plugins/animation_player_editor_plugin.cpp | 44 | ||||
-rw-r--r-- | editor/plugins/animation_player_editor_plugin.h | 2 |
2 files changed, 14 insertions, 32 deletions
diff --git a/editor/plugins/animation_player_editor_plugin.cpp b/editor/plugins/animation_player_editor_plugin.cpp index 951e971615..7d96f0b87b 100644 --- a/editor/plugins/animation_player_editor_plugin.cpp +++ b/editor/plugins/animation_player_editor_plugin.cpp @@ -289,39 +289,24 @@ void AnimationPlayerEditor::_pause_pressed() { //player->set_pause( pause->is_pressed() ); } +void AnimationPlayerEditor::_animation_selected(int p_which) { -String AnimationPlayerEditor::_get_current_animation() const { - + if (updating) + return; // when selecting an animation, the idea is that the only interesting behavior // ui-wise is that it should play/blend the next one if currently playing + String current; if (animation->get_selected() >= 0 && animation->get_selected() < animation->get_item_count()) { - return animation->get_item_text(animation->get_selected()); + current = animation->get_item_text(animation->get_selected()); } - return ""; -} - -void AnimationPlayerEditor::_animation_selected(int p_which) { - - if (updating) - return; - - _current_animation_updated(); -} - -void AnimationPlayerEditor::_current_animation_updated() { - - String current = _get_current_animation(); - if (current != "") { - Ref<Animation> anim = player->get_animation(current); player->set_assigned_animation(current); - { - if (!anim->is_connected("changed", this, "_current_animation_updated")) - anim->connect("changed", this, "_current_animation_updated"); + Ref<Animation> anim = player->get_animation(current); + { track_editor->set_animation(anim); Node *root = player->get_node(player->get_root()); @@ -1078,19 +1063,17 @@ void AnimationPlayerEditor::_list_changed() { _update_player(); } +void AnimationPlayerEditor::_animation_key_editor_anim_len_changed(float p_len) { + + frame->set_max(p_len); +} + void AnimationPlayerEditor::_animation_key_editor_anim_step_changed(float p_len) { if (p_len) frame->set_step(p_len); else frame->set_step(0.00001); - - String current = _get_current_animation(); - - if (current != "") { - Ref<Animation> anim = player->get_animation(current); - anim->_change_notify("step"); - } } void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos, bool p_drag) { @@ -1568,7 +1551,6 @@ void AnimationPlayerEditor::_bind_methods() { ClassDB::bind_method(D_METHOD("_autoplay_pressed"), &AnimationPlayerEditor::_autoplay_pressed); ClassDB::bind_method(D_METHOD("_pause_pressed"), &AnimationPlayerEditor::_pause_pressed); ClassDB::bind_method(D_METHOD("_animation_selected"), &AnimationPlayerEditor::_animation_selected); - ClassDB::bind_method(D_METHOD("_current_animation_updated"), &AnimationPlayerEditor::_current_animation_updated); ClassDB::bind_method(D_METHOD("_animation_name_edited"), &AnimationPlayerEditor::_animation_name_edited); ClassDB::bind_method(D_METHOD("_animation_new"), &AnimationPlayerEditor::_animation_new); ClassDB::bind_method(D_METHOD("_animation_rename"), &AnimationPlayerEditor::_animation_rename); @@ -1588,6 +1570,7 @@ void AnimationPlayerEditor::_bind_methods() { //ClassDB::bind_method(D_METHOD("_editor_load_all"),&AnimationPlayerEditor::_editor_load_all); ClassDB::bind_method(D_METHOD("_list_changed"), &AnimationPlayerEditor::_list_changed); ClassDB::bind_method(D_METHOD("_animation_key_editor_seek"), &AnimationPlayerEditor::_animation_key_editor_seek); + ClassDB::bind_method(D_METHOD("_animation_key_editor_anim_len_changed"), &AnimationPlayerEditor::_animation_key_editor_anim_len_changed); ClassDB::bind_method(D_METHOD("_animation_key_editor_anim_step_changed"), &AnimationPlayerEditor::_animation_key_editor_anim_step_changed); ClassDB::bind_method(D_METHOD("_hide_anim_editors"), &AnimationPlayerEditor::_hide_anim_editors); ClassDB::bind_method(D_METHOD("_animation_duplicate"), &AnimationPlayerEditor::_animation_duplicate); @@ -1801,6 +1784,7 @@ AnimationPlayerEditor::AnimationPlayerEditor(EditorNode *p_editor, AnimationPlay add_child(track_editor); track_editor->set_v_size_flags(SIZE_EXPAND_FILL); track_editor->connect("timeline_changed", this, "_animation_key_editor_seek"); + track_editor->connect("animation_len_changed", this, "_animation_key_editor_anim_len_changed"); track_editor->connect("animation_step_changed", this, "_animation_key_editor_anim_step_changed"); _update_player(); diff --git a/editor/plugins/animation_player_editor_plugin.h b/editor/plugins/animation_player_editor_plugin.h index b1026b5b9f..dedce16bbc 100644 --- a/editor/plugins/animation_player_editor_plugin.h +++ b/editor/plugins/animation_player_editor_plugin.h @@ -171,9 +171,7 @@ class AnimationPlayerEditor : public VBoxContainer { void _autoplay_pressed(); void _stop_pressed(); void _pause_pressed(); - String _get_current_animation() const; void _animation_selected(int p_which); - void _current_animation_updated(); void _animation_new(); void _animation_rename(); void _animation_name_edited(); |