You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-02 16:48:55 +00:00
Implement a more coherent (and way less hack) way to block animation updates, fixes #24618
This commit is contained in:
@@ -1004,12 +1004,10 @@ void AnimationTrackEditTypeAudio::drop_data(const Point2 &p_point, const Variant
|
||||
ofs += 0.001;
|
||||
}
|
||||
|
||||
*get_block_animation_update_ptr() = true;
|
||||
get_undo_redo()->create_action(TTR("Add Audio Track Clip"));
|
||||
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_insert_key", get_track(), ofs, stream);
|
||||
get_undo_redo()->add_undo_method(get_animation().ptr(), "track_remove_key_at_position", get_track(), ofs);
|
||||
get_undo_redo()->commit_action();
|
||||
*get_block_animation_update_ptr() = false;
|
||||
|
||||
update();
|
||||
return;
|
||||
@@ -1098,21 +1096,17 @@ void AnimationTrackEditTypeAudio::_gui_input(const Ref<InputEvent> &p_event) {
|
||||
float ofs_local = -len_resizing_rel / get_timeline()->get_zoom_scale();
|
||||
if (len_resizing_start) {
|
||||
float prev_ofs = get_animation()->audio_track_get_key_start_offset(get_track(), len_resizing_index);
|
||||
*get_block_animation_update_ptr() = true;
|
||||
get_undo_redo()->create_action(TTR("Change Audio Track Clip Start Offset"));
|
||||
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
||||
get_undo_redo()->add_undo_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs);
|
||||
get_undo_redo()->commit_action();
|
||||
*get_block_animation_update_ptr() = false;
|
||||
|
||||
} else {
|
||||
float prev_ofs = get_animation()->audio_track_get_key_end_offset(get_track(), len_resizing_index);
|
||||
*get_block_animation_update_ptr() = true;
|
||||
get_undo_redo()->create_action(TTR("Change Audio Track Clip End Offset"));
|
||||
get_undo_redo()->add_do_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
||||
get_undo_redo()->add_undo_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs);
|
||||
get_undo_redo()->commit_action();
|
||||
*get_block_animation_update_ptr() = false;
|
||||
}
|
||||
|
||||
len_resizing = false;
|
||||
|
||||
Reference in New Issue
Block a user