Add per-scene UndoRedo
This commit is contained in:
@ -35,6 +35,7 @@
|
||||
#include "editor/animation_bezier_editor.h"
|
||||
#include "editor/editor_node.h"
|
||||
#include "editor/editor_scale.h"
|
||||
#include "editor/editor_undo_redo_manager.h"
|
||||
#include "editor/plugins/animation_player_editor_plugin.h"
|
||||
#include "scene/animation/animation_player.h"
|
||||
#include "scene/gui/separator.h"
|
||||
@ -680,7 +681,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
UndoRedo *undo_redo = nullptr;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
Ref<Animation> animation;
|
||||
int track = -1;
|
||||
float key_ofs = 0;
|
||||
@ -1374,7 +1375,7 @@ public:
|
||||
|
||||
bool use_fps = false;
|
||||
|
||||
UndoRedo *undo_redo = nullptr;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
void notify_change() {
|
||||
notify_property_list_changed();
|
||||
@ -1708,7 +1709,7 @@ Size2 AnimationTimelineEdit::get_minimum_size() const {
|
||||
return ms;
|
||||
}
|
||||
|
||||
void AnimationTimelineEdit::set_undo_redo(UndoRedo *p_undo_redo) {
|
||||
void AnimationTimelineEdit::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
@ -2507,10 +2508,14 @@ Size2 AnimationTrackEdit::get_minimum_size() const {
|
||||
return Vector2(1, max_h + separation);
|
||||
}
|
||||
|
||||
void AnimationTrackEdit::set_undo_redo(UndoRedo *p_undo_redo) {
|
||||
void AnimationTrackEdit::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> AnimationTrackEdit::get_undo_redo() const {
|
||||
return undo_redo;
|
||||
}
|
||||
|
||||
void AnimationTrackEdit::set_timeline(AnimationTimelineEdit *p_timeline) {
|
||||
timeline = p_timeline;
|
||||
timeline->set_track_edit(this);
|
||||
@ -6065,7 +6070,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
case EDIT_OPTIMIZE_ANIMATION_CONFIRM: {
|
||||
animation->optimize(optimize_linear_error->get_value(), optimize_angular_error->get_value(), optimize_max_angle->get_value());
|
||||
_update_tracks();
|
||||
undo_redo->clear_history();
|
||||
undo_redo->clear_history(true, undo_redo->get_history_for_object(animation.ptr()).id);
|
||||
|
||||
} break;
|
||||
case EDIT_CLEAN_UP_ANIMATION: {
|
||||
@ -6133,7 +6138,7 @@ void AnimationTrackEditor::_cleanup_animation(Ref<Animation> p_animation) {
|
||||
}
|
||||
}
|
||||
|
||||
undo_redo->clear_history();
|
||||
undo_redo->clear_history(true, undo_redo->get_history_for_object(animation.ptr()).id);
|
||||
_update_tracks();
|
||||
}
|
||||
|
||||
@ -6303,7 +6308,7 @@ void AnimationTrackEditor::_pick_track_filter_input(const Ref<InputEvent> &p_ie)
|
||||
}
|
||||
|
||||
AnimationTrackEditor::AnimationTrackEditor() {
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
main_panel = memnew(PanelContainer);
|
||||
main_panel->set_focus_mode(FOCUS_ALL); // Allow panel to have focus so that shortcuts work as expected.
|
||||
|
||||
Reference in New Issue
Block a user