Merge pull request #48471 from TokageItLab/fix-animation-track-editor-undo
Fixed broken AnimationTrackEditor's undo in 4.0
This commit is contained in:
commit
8253bd7208
|
@ -762,7 +762,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Bezier Point"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", track, time, new_point);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", track, time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", track, time);
|
||||
undo_redo->commit_action();
|
||||
|
||||
//then attempt to move
|
||||
|
@ -857,7 +857,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|||
continue; //already in selection, don't save
|
||||
}
|
||||
|
||||
undo_redo->add_do_method(animation.ptr(), "track_remove_key_at_position", track, newtime);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_remove_key_at_time", track, newtime);
|
||||
AnimMoveRestore amr;
|
||||
|
||||
amr.key = animation->track_get_key_value(track, idx);
|
||||
|
@ -888,7 +888,7 @@ void AnimationBezierTrackEdit::_gui_input(const Ref<InputEvent> &p_event) {
|
|||
if (newpos<0)
|
||||
continue; //no remove what no inserted
|
||||
*/
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", track, newpos);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", track, newpos);
|
||||
}
|
||||
|
||||
// 5-(undo) reinsert keys
|
||||
|
@ -1038,7 +1038,7 @@ void AnimationBezierTrackEdit::_menu_selected(int p_index) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Bezier Point"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", track, time, new_point);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", track, time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", track, time);
|
||||
undo_redo->commit_action();
|
||||
|
||||
} break;
|
||||
|
@ -1074,7 +1074,7 @@ void AnimationBezierTrackEdit::duplicate_selection() {
|
|||
int existing_idx = animation->track_find_key(track, dst_time, true);
|
||||
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", track, dst_time, animation->track_get_key_value(track, E->get()), animation->track_get_key_transition(track, E->get()));
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", track, dst_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", track, dst_time);
|
||||
|
||||
Pair<int, float> p;
|
||||
p.first = track;
|
||||
|
|
|
@ -134,7 +134,7 @@ public:
|
|||
undo_redo->add_do_method(animation.ptr(), "track_remove_key", track, key);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", track, new_time, val, trans);
|
||||
undo_redo->add_do_method(this, "_key_ofs_changed", animation, key_ofs, new_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", track, new_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", track, new_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_insert_key", track, key_ofs, val, trans);
|
||||
undo_redo->add_undo_method(this, "_key_ofs_changed", animation, new_time, key_ofs);
|
||||
|
||||
|
@ -758,7 +758,7 @@ public:
|
|||
undo_redo->add_do_method(animation.ptr(), "track_remove_key", track, key);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", track, new_time, val, trans);
|
||||
undo_redo->add_do_method(this, "_key_ofs_changed", animation, key_ofs, new_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", track, new_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", track, new_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_insert_key", track, key_ofs, val, trans);
|
||||
undo_redo->add_undo_method(this, "_key_ofs_changed", animation, new_time, key_ofs);
|
||||
|
||||
|
@ -3979,7 +3979,7 @@ AnimationTrackEditor::TrackIndices AnimationTrackEditor::_confirm_insert(InsertD
|
|||
undo_redo->add_undo_method(animation.ptr(), "remove_track", animation->get_track_count());
|
||||
p_next_tracks.normal++;
|
||||
} else {
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", p_id.track_idx, time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_id.track_idx, time);
|
||||
int existing = animation->track_find_key(p_id.track_idx, time, true);
|
||||
if (existing != -1) {
|
||||
Variant v = animation->track_get_key_value(p_id.track_idx, existing);
|
||||
|
@ -4568,7 +4568,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Transform Track Key"));
|
||||
undo_redo->add_do_method(animation.ptr(), "transform_track_insert_key", p_track, p_ofs, loc, rot, scale);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", p_track, p_ofs);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
|
||||
undo_redo->commit_action();
|
||||
|
||||
} break;
|
||||
|
@ -4580,7 +4580,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
|||
undo_redo->create_action(TTR("Add Track Key"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", p_track, p_ofs, value);
|
||||
undo_redo->add_undo_method(this, "_clear_selection_for_anim", animation);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", p_track, p_ofs);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
|
||||
undo_redo->commit_action();
|
||||
|
||||
} break;
|
||||
|
@ -4611,7 +4611,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Track Key"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", p_track, p_ofs, arr);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", p_track, p_ofs);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
|
||||
undo_redo->commit_action();
|
||||
|
||||
} break;
|
||||
|
@ -4623,7 +4623,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Track Key"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", p_track, p_ofs, ak);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", p_track, p_ofs);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
|
||||
undo_redo->commit_action();
|
||||
} break;
|
||||
case Animation::TYPE_ANIMATION: {
|
||||
|
@ -4631,7 +4631,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Track Key"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", p_track, p_ofs, anim);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", p_track, p_ofs);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", p_track, p_ofs);
|
||||
undo_redo->commit_action();
|
||||
} break;
|
||||
}
|
||||
|
@ -4669,7 +4669,7 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
|
|||
|
||||
undo_redo->create_action(TTR("Add Method Track Key"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", insert_key_from_track_call_track, insert_key_from_track_call_ofs, d);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", insert_key_from_track_call_track, insert_key_from_track_call_ofs);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", insert_key_from_track_call_track, insert_key_from_track_call_ofs);
|
||||
undo_redo->commit_action();
|
||||
|
||||
return;
|
||||
|
@ -4879,7 +4879,7 @@ void AnimationTrackEditor::_move_selection_commit() {
|
|||
continue; //already in selection, don't save
|
||||
}
|
||||
|
||||
undo_redo->add_do_method(animation.ptr(), "track_remove_key_at_position", E->key().track, newtime);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_remove_key_at_time", E->key().track, newtime);
|
||||
_AnimMoveRestore amr;
|
||||
|
||||
amr.key = animation->track_get_key_value(E->key().track, idx);
|
||||
|
@ -4899,7 +4899,7 @@ void AnimationTrackEditor::_move_selection_commit() {
|
|||
// 4 - (undo) remove inserted keys
|
||||
for (Map<SelectedKey, KeyInfo>::Element *E = selection.back(); E; E = E->prev()) {
|
||||
float newpos = snap_time(E->get().pos + motion);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", E->key().track, newpos);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", E->key().track, newpos);
|
||||
}
|
||||
|
||||
// 5 - (undo) reinsert keys
|
||||
|
@ -5096,7 +5096,7 @@ void AnimationTrackEditor::_anim_duplicate_keys(bool transpose) {
|
|||
int existing_idx = animation->track_find_key(dst_track, dst_time, true);
|
||||
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", dst_track, dst_time, animation->track_get_key_value(E->key().track, E->key().key), animation->track_get_key_transition(E->key().track, E->key().key));
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", dst_track, dst_time);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", dst_track, dst_time);
|
||||
|
||||
Pair<int, float> p;
|
||||
p.first = dst_track;
|
||||
|
@ -5344,7 +5344,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|||
continue; //already in selection, don't save
|
||||
}
|
||||
|
||||
undo_redo->add_do_method(animation.ptr(), "track_remove_key_at_position", E->key().track, newtime);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_remove_key_at_time", E->key().track, newtime);
|
||||
_AnimMoveRestore amr;
|
||||
|
||||
amr.key = animation->track_get_key_value(E->key().track, idx);
|
||||
|
@ -5365,7 +5365,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
|||
// 4-(undo) remove inserted keys
|
||||
for (Map<SelectedKey, KeyInfo>::Element *E = selection.back(); E; E = E->prev()) {
|
||||
float newpos = _NEW_POS(E->get().pos);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_position", E->key().track, newpos);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", E->key().track, newpos);
|
||||
}
|
||||
|
||||
// 5-(undo) reinsert keys
|
||||
|
|
|
@ -1024,7 +1024,7 @@ void AnimationTrackEditTypeAudio::drop_data(const Point2 &p_point, const Variant
|
|||
|
||||
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()->add_undo_method(get_animation().ptr(), "track_remove_key_at_time", get_track(), ofs);
|
||||
get_undo_redo()->commit_action();
|
||||
|
||||
update();
|
||||
|
|
Loading…
Reference in New Issue