diff --git a/editor/animation/animation_track_editor.cpp b/editor/animation/animation_track_editor.cpp index 142d5cf233a..b4e61d5dfb4 100644 --- a/editor/animation/animation_track_editor.cpp +++ b/editor/animation/animation_track_editor.cpp @@ -4049,7 +4049,7 @@ void AnimationTrackEditor::set_animation(const Ref &p_anim, bool p_re marker_edit->set_animation(p_anim, read_only); marker_edit->set_play_position(timeline->get_play_position()); - _cancel_bezier_edit(); + _check_bezier_exist(); _update_tracks(); if (animation.is_valid()) { @@ -4078,7 +4078,14 @@ void AnimationTrackEditor::set_animation(const Ref &p_anim, bool p_re } } - _check_bezier_exist(); + if (bezier_edit->is_visible()) { + for (int i = 0; i < animation->get_track_count(); ++i) { + if (animation->track_get_type(i) == Animation::TrackType::TYPE_BEZIER) { + _bezier_edit(i); + break; + } + } + } } else { hscroll->hide(); edit->set_disabled(true); @@ -4099,10 +4106,12 @@ void AnimationTrackEditor::set_animation(const Ref &p_anim, bool p_re void AnimationTrackEditor::_check_bezier_exist() { bool is_exist = false; - for (int i = 0; i < animation->get_track_count(); i++) { - if (animation->track_get_type(i) == Animation::TrackType::TYPE_BEZIER) { - is_exist = true; - break; + if (animation.is_valid()) { + for (int i = 0; i < animation->get_track_count(); i++) { + if (animation->track_get_type(i) == Animation::TrackType::TYPE_BEZIER) { + is_exist = true; + break; + } } } if (is_exist) {