Fix broken sync between animation TrackEditor and PlayerEditor

This commit is contained in:
Silc Lizard (Tokage) Renew 2024-07-06 04:45:01 +09:00
parent b97110cd30
commit fae712d968
3 changed files with 9 additions and 17 deletions

View file

@ -3690,7 +3690,7 @@ void AnimationTrackEditor::_name_limit_changed() {
}
void AnimationTrackEditor::_timeline_changed(float p_new_pos, bool p_timeline_only) {
emit_signal(SNAME("timeline_changed"), p_new_pos, p_timeline_only);
emit_signal(SNAME("timeline_changed"), p_new_pos, p_timeline_only, false);
}
void AnimationTrackEditor::_track_remove_request(int p_track) {
@ -3787,6 +3787,7 @@ void AnimationTrackEditor::set_anim_pos(float p_pos) {
}
_redraw_groups();
bezier_edit->set_play_position(p_pos);
emit_signal(SNAME("timeline_changed"), p_pos, true, true);
}
static bool track_type_is_resettable(Animation::TrackType p_type) {

View file

@ -1395,23 +1395,14 @@ void AnimationPlayerEditor::_current_animation_changed(const String &p_name) {
void AnimationPlayerEditor::_animation_key_editor_anim_len_changed(float p_len) {
frame->set_max(p_len);
}
void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos, bool p_timeline_only) {
void AnimationPlayerEditor::_animation_key_editor_seek(float p_pos, bool p_timeline_only, bool p_update_position_only) {
timeline_position = p_pos;
if (!is_visible_in_tree()) {
return;
}
if (!player) {
return;
}
if (player->is_playing()) {
return;
}
if (!player->has_animation(player->get_assigned_animation())) {
if (!is_visible_in_tree() ||
p_update_position_only ||
!player ||
player->is_playing() ||
!player->has_animation(player->get_assigned_animation())) {
return;
}

View file

@ -214,7 +214,7 @@ class AnimationPlayerEditor : public VBoxContainer {
void _animation_player_changed(Object *p_pl);
void _animation_libraries_updated();
void _animation_key_editor_seek(float p_pos, bool p_timeline_only = false);
void _animation_key_editor_seek(float p_pos, bool p_timeline_only = false, bool p_update_position_only = false);
void _animation_key_editor_anim_len_changed(float p_len);
virtual void shortcut_input(const Ref<InputEvent> &p_ev) override;