Merge pull request #69127 from KoBeWi/redUNDOnt
Cleanup remaining EditorUndoRedoManager usages
This commit is contained in:
commit
e1b87cc6a5
@ -655,10 +655,6 @@ Size2 AnimationBezierTrackEdit::get_minimum_size() const {
|
||||
return Vector2(1, 1);
|
||||
}
|
||||
|
||||
void AnimationBezierTrackEdit::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
void AnimationBezierTrackEdit::set_timeline(AnimationTimelineEdit *p_timeline) {
|
||||
timeline = p_timeline;
|
||||
timeline->connect("zoom_changed", callable_mp(this, &AnimationBezierTrackEdit::_zoom_changed));
|
||||
@ -791,6 +787,7 @@ void AnimationBezierTrackEdit::_clear_selection() {
|
||||
}
|
||||
|
||||
void AnimationBezierTrackEdit::_change_selected_keys_handle_mode(Animation::HandleMode p_mode, bool p_auto) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Update Selected Key Handles"));
|
||||
for (SelectionSet::Element *E = selection.back(); E; E = E->prev()) {
|
||||
const IntPair track_key_pair = E->get();
|
||||
@ -987,6 +984,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
||||
if (I.value.has_point(mb->get_position())) {
|
||||
if (I.key == REMOVE_ICON) {
|
||||
if (!read_only) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action("Remove Bezier Track");
|
||||
|
||||
undo_redo->add_do_method(this, "_update_locked_tracks_after", track);
|
||||
@ -1173,6 +1171,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
||||
time += 0.001;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Bezier Point"));
|
||||
undo_redo->add_do_method(animation.ptr(), "bezier_track_insert_key", selected_track, time, new_point);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", selected_track, time);
|
||||
@ -1270,6 +1269,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
||||
if (moving_selection) {
|
||||
//combit it
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move Bezier Points"));
|
||||
|
||||
List<AnimMoveRestore> to_restore;
|
||||
@ -1470,6 +1470,7 @@ void AnimationBezierTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
||||
|
||||
if ((moving_handle == -1 || moving_handle == 1) && mb.is_valid() && !mb->is_pressed() && mb->get_button_index() == MouseButton::LEFT) {
|
||||
if (!read_only) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move Bezier Points"));
|
||||
if (moving_handle == -1) {
|
||||
real_t ratio = timeline->get_zoom_scale() * v_zoom;
|
||||
@ -1541,6 +1542,7 @@ void AnimationBezierTrackEdit::_menu_selected(int p_index) {
|
||||
time += 0.001;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Bezier Point"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_insert_key", selected_track, time, new_point);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_remove_key_at_time", selected_track, time);
|
||||
@ -1588,6 +1590,7 @@ void AnimationBezierTrackEdit::duplicate_selection() {
|
||||
}
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Duplicate Keys"));
|
||||
|
||||
List<Pair<int, real_t>> new_selection_values;
|
||||
@ -1633,6 +1636,7 @@ void AnimationBezierTrackEdit::duplicate_selection() {
|
||||
|
||||
void AnimationBezierTrackEdit::delete_selection() {
|
||||
if (selection.size()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Delete Keys"));
|
||||
|
||||
for (SelectionSet::Element *E = selection.back(); E; E = E->prev()) {
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "animation_track_editor.h"
|
||||
#include "core/templates/hashfuncs.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
class ViewPanner;
|
||||
|
||||
class AnimationBezierTrackEdit : public Control {
|
||||
@ -53,7 +52,6 @@ class AnimationBezierTrackEdit : public Control {
|
||||
};
|
||||
|
||||
AnimationTimelineEdit *timeline = nullptr;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
Node *root = nullptr;
|
||||
Control *play_position = nullptr; //separate control used to draw so updates for only position changed are much faster
|
||||
real_t play_position_pos = 0;
|
||||
@ -197,7 +195,6 @@ public:
|
||||
void set_animation_and_track(const Ref<Animation> &p_animation, int p_track, bool p_read_only);
|
||||
virtual Size2 get_minimum_size() const override;
|
||||
|
||||
void set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo);
|
||||
void set_timeline(AnimationTimelineEdit *p_timeline);
|
||||
void set_editor(AnimationTrackEditor *p_editor);
|
||||
void set_root(Node *p_root);
|
||||
|
@ -133,6 +133,7 @@ public:
|
||||
int existing = animation->track_find_key(track, new_time, true);
|
||||
|
||||
setting = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Change Keyframe Time"), UndoRedo::MERGE_ENDS);
|
||||
|
||||
Variant val = animation->track_get_key_value(track, key);
|
||||
@ -160,6 +161,7 @@ public:
|
||||
float val = p_value;
|
||||
float prev_val = animation->track_get_key_transition(track, key);
|
||||
setting = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Change Transition"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_key_transition", track, key, val);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_set_key_transition", track, key, prev_val);
|
||||
@ -171,6 +173,7 @@ public:
|
||||
return true;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
switch (animation->track_get_type(track)) {
|
||||
case Animation::TYPE_POSITION_3D:
|
||||
case Animation::TYPE_ROTATION_3D:
|
||||
@ -685,7 +688,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
Ref<Animation> animation;
|
||||
int track = -1;
|
||||
float key_ofs = 0;
|
||||
@ -810,6 +812,7 @@ public:
|
||||
|
||||
int existing = animation->track_find_key(track, new_time, true);
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (!setting) {
|
||||
setting = true;
|
||||
undo_redo->create_action(TTR("Anim Multi Change Keyframe Time"), UndoRedo::MERGE_ENDS);
|
||||
@ -834,6 +837,7 @@ public:
|
||||
float val = p_value;
|
||||
float prev_val = animation->track_get_key_transition(track, key);
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (!setting) {
|
||||
setting = true;
|
||||
undo_redo->create_action(TTR("Anim Multi Change Transition"), UndoRedo::MERGE_ENDS);
|
||||
@ -843,6 +847,7 @@ public:
|
||||
update_obj = true;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
switch (animation->track_get_type(track)) {
|
||||
case Animation::TYPE_POSITION_3D:
|
||||
case Animation::TYPE_ROTATION_3D:
|
||||
@ -1053,6 +1058,7 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (setting) {
|
||||
if (update_obj) {
|
||||
undo_redo->add_do_method(this, "_update_obj", animation);
|
||||
@ -1376,8 +1382,6 @@ public:
|
||||
|
||||
bool use_fps = false;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
void notify_change() {
|
||||
notify_property_list_changed();
|
||||
}
|
||||
@ -1419,6 +1423,7 @@ void AnimationTimelineEdit::_anim_length_changed(double p_new_len) {
|
||||
}
|
||||
|
||||
editing = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Length"));
|
||||
undo_redo->add_do_method(animation.ptr(), "set_length", p_new_len);
|
||||
undo_redo->add_undo_method(animation.ptr(), "set_length", animation->get_length());
|
||||
@ -1431,6 +1436,7 @@ void AnimationTimelineEdit::_anim_length_changed(double p_new_len) {
|
||||
|
||||
void AnimationTimelineEdit::_anim_loop_pressed() {
|
||||
if (!read_only) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Loop"));
|
||||
switch (animation->get_loop_mode()) {
|
||||
case Animation::LOOP_NONE: {
|
||||
@ -1712,10 +1718,6 @@ Size2 AnimationTimelineEdit::get_minimum_size() const {
|
||||
return ms;
|
||||
}
|
||||
|
||||
void AnimationTimelineEdit::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
void AnimationTimelineEdit::set_zoom(Range *p_zoom) {
|
||||
zoom = p_zoom;
|
||||
zoom->connect("value_changed", callable_mp(this, &AnimationTimelineEdit::_zoom_changed));
|
||||
@ -2514,14 +2516,6 @@ Size2 AnimationTrackEdit::get_minimum_size() const {
|
||||
return Vector2(1, max_h + separation);
|
||||
}
|
||||
|
||||
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);
|
||||
@ -2568,6 +2562,7 @@ void AnimationTrackEdit::_zoom_changed() {
|
||||
}
|
||||
|
||||
void AnimationTrackEdit::_path_submitted(const String &p_text) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Track Path"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_path", track, p_text);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_set_path", track, animation->track_get_path(track));
|
||||
@ -2805,6 +2800,7 @@ void AnimationTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
|
||||
|
||||
if (!read_only) {
|
||||
if (check_rect.has_point(pos)) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Toggle Track Enabled"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_enabled", track, !animation->track_is_enabled(track));
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_set_enabled", track, animation->track_is_enabled(track));
|
||||
@ -3196,6 +3192,7 @@ void AnimationTrackEdit::_menu_selected(int p_index) {
|
||||
case MENU_CALL_MODE_TRIGGER:
|
||||
case MENU_CALL_MODE_CAPTURE: {
|
||||
Animation::UpdateMode update_mode = Animation::UpdateMode(p_index);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Update Mode"));
|
||||
undo_redo->add_do_method(animation.ptr(), "value_track_set_update_mode", track, update_mode);
|
||||
undo_redo->add_undo_method(animation.ptr(), "value_track_set_update_mode", track, animation->value_track_get_update_mode(track));
|
||||
@ -3209,6 +3206,7 @@ void AnimationTrackEdit::_menu_selected(int p_index) {
|
||||
case MENU_INTERPOLATION_LINEAR_ANGLE:
|
||||
case MENU_INTERPOLATION_CUBIC_ANGLE: {
|
||||
Animation::InterpolationType interp_mode = Animation::InterpolationType(p_index - MENU_INTERPOLATION_NEAREST);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Interpolation Mode"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_interpolation_type", track, interp_mode);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_set_interpolation_type", track, animation->track_get_interpolation_type(track));
|
||||
@ -3218,6 +3216,7 @@ void AnimationTrackEdit::_menu_selected(int p_index) {
|
||||
case MENU_LOOP_WRAP:
|
||||
case MENU_LOOP_CLAMP: {
|
||||
bool loop_wrap = p_index == MENU_LOOP_WRAP;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Loop Mode"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_interpolation_loop_wrap", track, loop_wrap);
|
||||
undo_redo->add_undo_method(animation.ptr(), "track_set_interpolation_loop_wrap", track, animation->track_get_interpolation_loop_wrap(track));
|
||||
@ -3611,6 +3610,7 @@ void AnimationTrackEditor::_animation_track_remove_request(int p_track, Ref<Anim
|
||||
}
|
||||
int idx = p_track;
|
||||
if (idx >= 0 && idx < p_from_animation->get_track_count()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove Anim Track"), UndoRedo::MERGE_DISABLE, p_from_animation.ptr());
|
||||
|
||||
// Remove corresponding reset tracks if they are no longer needed.
|
||||
@ -3811,6 +3811,7 @@ void AnimationTrackEditor::_query_insert(const InsertData &p_id) {
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::_insert_track(bool p_reset_wanted, bool p_create_beziers) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Insert"));
|
||||
|
||||
Ref<Animation> reset_anim;
|
||||
@ -4141,6 +4142,7 @@ Ref<Animation> AnimationTrackEditor::_create_and_get_reset_animation() {
|
||||
Ref<Animation> reset_anim;
|
||||
reset_anim.instantiate();
|
||||
reset_anim->set_length(ANIM_MIN_LENGTH);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->add_do_method(al.ptr(), "add_animation", SceneStringNames::get_singleton()->RESET, reset_anim);
|
||||
undo_redo->add_do_method(AnimationPlayerEditor::get_singleton(), "_animation_player_changed", player);
|
||||
undo_redo->add_undo_method(al.ptr(), "remove_animation", SceneStringNames::get_singleton()->RESET);
|
||||
@ -4150,6 +4152,7 @@ Ref<Animation> AnimationTrackEditor::_create_and_get_reset_animation() {
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::_confirm_insert_list() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Create & Insert"));
|
||||
|
||||
bool create_reset = insert_confirm_reset->is_visible() && insert_confirm_reset->is_pressed();
|
||||
@ -4323,6 +4326,7 @@ AnimationTrackEditor::TrackIndices AnimationTrackEditor::_confirm_insert(InsertD
|
||||
}
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (create_normal_track) {
|
||||
if (p_create_beziers) {
|
||||
bool valid;
|
||||
@ -4607,7 +4611,6 @@ void AnimationTrackEditor::_update_tracks() {
|
||||
track_vbox->add_child(track_edit);
|
||||
}
|
||||
|
||||
track_edit->set_undo_redo(undo_redo);
|
||||
track_edit->set_timeline(timeline);
|
||||
track_edit->set_root(root);
|
||||
track_edit->set_animation_and_track(animation, i, file_read_only);
|
||||
@ -4781,6 +4784,7 @@ void AnimationTrackEditor::_update_scroll(double) {
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::_update_step(double p_new_step) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Step"));
|
||||
float step_value = p_new_step;
|
||||
if (timeline->is_using_fps()) {
|
||||
@ -4807,6 +4811,7 @@ void AnimationTrackEditor::_dropped_track(int p_from_track, int p_to_track) {
|
||||
}
|
||||
|
||||
_clear_selection(true);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Rearrange Tracks"));
|
||||
undo_redo->add_do_method(animation.ptr(), "track_move_to", p_from_track, p_to_track);
|
||||
// Take into account that the position of the tracks that come after the one removed will change.
|
||||
@ -4850,6 +4855,7 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) {
|
||||
case Animation::TYPE_ROTATION_3D:
|
||||
case Animation::TYPE_SCALE_3D:
|
||||
case Animation::TYPE_METHOD: {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Track"));
|
||||
undo_redo->add_do_method(animation.ptr(), "add_track", adding_track_type);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_path", animation->get_track_count(), path_to);
|
||||
@ -4878,6 +4884,7 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Track"));
|
||||
undo_redo->add_do_method(animation.ptr(), "add_track", adding_track_type);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_path", animation->get_track_count(), path_to);
|
||||
@ -4896,6 +4903,7 @@ void AnimationTrackEditor::_new_track_node_selected(NodePath p_path) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Track"));
|
||||
undo_redo->add_do_method(animation.ptr(), "add_track", adding_track_type);
|
||||
undo_redo->add_do_method(animation.ptr(), "track_set_path", animation->get_track_count(), path_to);
|
||||
@ -4920,6 +4928,7 @@ void AnimationTrackEditor::_add_track(int p_type) {
|
||||
void AnimationTrackEditor::_new_track_property_selected(String p_name) {
|
||||
String full_path = String(adding_track_path) + ":" + p_name;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (adding_track_type == Animation::TYPE_VALUE) {
|
||||
Animation::UpdateMode update_mode = Animation::UPDATE_DISCRETE;
|
||||
{
|
||||
@ -5014,6 +5023,7 @@ void AnimationTrackEditor::_insert_key_from_track(float p_ofs, int p_track) {
|
||||
p_ofs += 0.001;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
switch (animation->track_get_type(p_track)) {
|
||||
case Animation::TYPE_POSITION_3D: {
|
||||
if (!root->has_node(animation->track_get_path(p_track))) {
|
||||
@ -5169,6 +5179,7 @@ void AnimationTrackEditor::_add_method_key(const String &p_method) {
|
||||
}
|
||||
d["args"] = params;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
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_time", insert_key_from_track_call_track, insert_key_from_track_call_ofs);
|
||||
@ -5284,7 +5295,6 @@ void AnimationTrackEditor::_update_key_edit() {
|
||||
|
||||
NodePath np;
|
||||
key_edit->hint = _find_hint_for_track(key_edit->track, np);
|
||||
key_edit->undo_redo = undo_redo;
|
||||
key_edit->base = np;
|
||||
|
||||
EditorNode::get_singleton()->push_item(key_edit);
|
||||
@ -5312,13 +5322,9 @@ void AnimationTrackEditor::_update_key_edit() {
|
||||
multi_key_edit->key_ofs_map = key_ofs_map;
|
||||
multi_key_edit->base_map = base_map;
|
||||
multi_key_edit->hint = _find_hint_for_track(first_track, base_map[first_track]);
|
||||
|
||||
multi_key_edit->use_fps = timeline->is_using_fps();
|
||||
|
||||
multi_key_edit->root_path = root;
|
||||
|
||||
multi_key_edit->undo_redo = undo_redo;
|
||||
|
||||
EditorNode::get_singleton()->push_item(multi_key_edit);
|
||||
}
|
||||
}
|
||||
@ -5349,6 +5355,7 @@ void AnimationTrackEditor::_select_at_anim(const Ref<Animation> &p_anim, int p_t
|
||||
}
|
||||
|
||||
void AnimationTrackEditor::_move_selection_commit() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Move Keys"));
|
||||
|
||||
List<_AnimMoveRestore> to_restore;
|
||||
@ -5601,6 +5608,7 @@ void AnimationTrackEditor::_anim_duplicate_keys(bool transpose) {
|
||||
|
||||
int start_track = transpose ? _get_track_selected() : top_track;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Duplicate Keys"));
|
||||
|
||||
List<Pair<int, float>> new_selection_values;
|
||||
@ -5831,6 +5839,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
}
|
||||
|
||||
int base_track = animation->get_track_count();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Paste Tracks"));
|
||||
for (int i = 0; i < track_clipboard.size(); i++) {
|
||||
undo_redo->add_do_method(animation.ptr(), "add_track", track_clipboard[i].track_type);
|
||||
@ -5902,6 +5911,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
ERR_PRINT("Can't scale to 0");
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Scale Keys"));
|
||||
|
||||
List<_AnimMoveRestore> to_restore;
|
||||
@ -5983,6 +5993,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
ease_dialog->popup_centered(Size2(200, 100) * EDSCALE);
|
||||
} break;
|
||||
case EDIT_EASE_CONFIRM: {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Make Easing Keys"));
|
||||
|
||||
Tween::TransitionType transition_type = static_cast<Tween::TransitionType>(transition_selection->get_selected_id());
|
||||
@ -6089,6 +6100,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
_anim_duplicate_keys(true);
|
||||
} break;
|
||||
case EDIT_ADD_RESET_KEY: {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Add RESET Keys"));
|
||||
|
||||
Ref<Animation> reset = _create_and_get_reset_animation();
|
||||
@ -6149,6 +6161,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
}
|
||||
|
||||
if (selection.size()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Anim Delete Keys"));
|
||||
|
||||
for (RBMap<SelectedKey, KeyInfo>::Element *E = selection.back(); E; E = E->prev()) {
|
||||
@ -6179,6 +6192,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
bake_dialog->popup_centered(Size2(200, 100) * EDSCALE);
|
||||
} break;
|
||||
case EDIT_BAKE_ANIMATION_CONFIRM: {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Bake Animation as Linear keys."));
|
||||
|
||||
int track_len = animation->get_track_count();
|
||||
@ -6299,6 +6313,7 @@ void AnimationTrackEditor::_edit_menu_pressed(int p_option) {
|
||||
animation->optimize(optimize_velocity_error->get_value(), optimize_angular_error->get_value(), optimize_precision_error->get_value());
|
||||
_redraw_tracks();
|
||||
_update_key_edit();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->clear_history(true, undo_redo->get_history_id_for_object(animation.ptr()));
|
||||
undo_redo->clear_history(true, undo_redo->get_history_id_for_object(this));
|
||||
|
||||
@ -6368,6 +6383,7 @@ void AnimationTrackEditor::_cleanup_animation(Ref<Animation> p_animation) {
|
||||
}
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->clear_history(true, undo_redo->get_history_id_for_object(animation.ptr()));
|
||||
undo_redo->clear_history(true, undo_redo->get_history_id_for_object(this));
|
||||
_update_tracks();
|
||||
@ -6533,8 +6549,6 @@ void AnimationTrackEditor::_pick_track_filter_input(const Ref<InputEvent> &p_ie)
|
||||
}
|
||||
|
||||
AnimationTrackEditor::AnimationTrackEditor() {
|
||||
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.
|
||||
add_child(main_panel);
|
||||
@ -6559,7 +6573,6 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
||||
main_panel->add_child(info_message);
|
||||
|
||||
timeline = memnew(AnimationTimelineEdit);
|
||||
timeline->set_undo_redo(undo_redo);
|
||||
timeline_vbox->add_child(timeline);
|
||||
timeline->connect("timeline_changed", callable_mp(this, &AnimationTrackEditor::_timeline_changed));
|
||||
timeline->connect("name_limit_changed", callable_mp(this, &AnimationTrackEditor::_name_limit_changed));
|
||||
@ -6582,7 +6595,6 @@ AnimationTrackEditor::AnimationTrackEditor() {
|
||||
|
||||
bezier_edit = memnew(AnimationBezierTrackEdit);
|
||||
timeline_vbox->add_child(bezier_edit);
|
||||
bezier_edit->set_undo_redo(undo_redo);
|
||||
bezier_edit->set_editor(this);
|
||||
bezier_edit->set_timeline(timeline);
|
||||
bezier_edit->hide();
|
||||
|
@ -79,7 +79,6 @@ class AnimationTimelineEdit : public Range {
|
||||
void _anim_loop_pressed();
|
||||
|
||||
void _play_position_draw();
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
Rect2 hsize_rect;
|
||||
|
||||
bool editing = false;
|
||||
@ -113,7 +112,6 @@ public:
|
||||
void set_track_edit(AnimationTrackEdit *p_track_edit);
|
||||
void set_zoom(Range *p_zoom);
|
||||
Range *get_zoom() const { return zoom; }
|
||||
void set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo);
|
||||
|
||||
void set_play_position(float p_pos);
|
||||
float get_play_position() const;
|
||||
@ -156,7 +154,6 @@ class AnimationTrackEdit : public Control {
|
||||
};
|
||||
|
||||
AnimationTimelineEdit *timeline = nullptr;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
Popup *path_popup = nullptr;
|
||||
LineEdit *path = nullptr;
|
||||
Node *root = nullptr;
|
||||
@ -237,12 +234,10 @@ public:
|
||||
Ref<Animation> get_animation() const;
|
||||
AnimationTimelineEdit *get_timeline() const { return timeline; }
|
||||
AnimationTrackEditor *get_editor() const { return editor; }
|
||||
Ref<EditorUndoRedoManager> get_undo_redo() const;
|
||||
NodePath get_path() const;
|
||||
void set_animation_and_track(const Ref<Animation> &p_animation, int p_track, bool p_read_only);
|
||||
virtual Size2 get_minimum_size() const override;
|
||||
|
||||
void set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo);
|
||||
void set_timeline(AnimationTimelineEdit *p_timeline);
|
||||
void set_editor(AnimationTrackEditor *p_editor);
|
||||
void set_root(Node *p_root);
|
||||
@ -339,8 +334,6 @@ class AnimationTrackEditor : public VBoxContainer {
|
||||
void _animation_track_remove_request(int p_track, Ref<Animation> p_from_animation);
|
||||
void _track_grab_focus(int p_track);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
void _update_scroll(double);
|
||||
void _update_step(double p_new_step);
|
||||
void _update_length(double p_new_len);
|
||||
|
@ -31,6 +31,7 @@
|
||||
#include "animation_track_editor_plugins.h"
|
||||
|
||||
#include "editor/audio_stream_preview.h"
|
||||
#include "editor/editor_node.h"
|
||||
#include "editor/editor_resource_preview.h"
|
||||
#include "editor/editor_scale.h"
|
||||
#include "editor/editor_undo_redo_manager.h"
|
||||
@ -1021,10 +1022,11 @@ void AnimationTrackEditTypeAudio::drop_data(const Point2 &p_point, const Variant
|
||||
ofs += 0.001;
|
||||
}
|
||||
|
||||
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_time", get_track(), ofs);
|
||||
get_undo_redo()->commit_action();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Audio Track Clip"));
|
||||
undo_redo->add_do_method(get_animation().ptr(), "audio_track_insert_key", get_track(), ofs, stream);
|
||||
undo_redo->add_undo_method(get_animation().ptr(), "track_remove_key_at_time", get_track(), ofs);
|
||||
undo_redo->commit_action();
|
||||
|
||||
queue_redraw();
|
||||
return;
|
||||
@ -1102,21 +1104,22 @@ void AnimationTrackEditTypeAudio::gui_input(const Ref<InputEvent> &p_event) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (len_resizing && mb.is_valid() && !mb->is_pressed() && mb->get_button_index() == MouseButton::LEFT) {
|
||||
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_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();
|
||||
undo_redo->create_action(TTR("Change Audio Track Clip Start Offset"));
|
||||
undo_redo->add_do_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
||||
undo_redo->add_undo_method(get_animation().ptr(), "audio_track_set_key_start_offset", get_track(), len_resizing_index, prev_ofs);
|
||||
undo_redo->commit_action();
|
||||
|
||||
} else {
|
||||
float prev_ofs = get_animation()->audio_track_get_key_end_offset(get_track(), len_resizing_index);
|
||||
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();
|
||||
undo_redo->create_action(TTR("Change Audio Track Clip End Offset"));
|
||||
undo_redo->add_do_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs + ofs_local);
|
||||
undo_redo->add_undo_method(get_animation().ptr(), "audio_track_set_key_end_offset", get_track(), len_resizing_index, prev_ofs);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
len_resizing_index = -1;
|
||||
|
@ -153,6 +153,7 @@ void AnimationNodeBlendSpace1DEditor::_blend_space_gui_input(const Ref<InputEven
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move Node Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_blend_point_position", selected_point, point);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_blend_point_position", selected_point, blend_space->get_blend_point_position(selected_point));
|
||||
@ -341,6 +342,7 @@ void AnimationNodeBlendSpace1DEditor::_config_changed(double) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change BlendSpace1D Config"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_max_space", max_value->get_value());
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_max_space", blend_space->get_max_space());
|
||||
@ -364,6 +366,7 @@ void AnimationNodeBlendSpace1DEditor::_labels_changed(String) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change BlendSpace1D Labels"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_value_label", label_value->get_text());
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_value_label", blend_space->get_value_label());
|
||||
@ -419,6 +422,7 @@ void AnimationNodeBlendSpace1DEditor::_add_menu_type(int p_index) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Node Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "add_blend_point", node, add_point_pos);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "remove_blend_point", blend_space->get_blend_point_count());
|
||||
@ -437,6 +441,7 @@ void AnimationNodeBlendSpace1DEditor::_add_animation_type(int p_index) {
|
||||
anim->set_animation(animations_to_add[p_index]);
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Animation Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "add_blend_point", anim, add_point_pos);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "remove_blend_point", blend_space->get_blend_point_count());
|
||||
@ -510,6 +515,7 @@ void AnimationNodeBlendSpace1DEditor::_erase_selected() {
|
||||
if (selected_point != -1) {
|
||||
updating = true;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove BlendSpace1D Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "remove_blend_point", selected_point);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "add_blend_point", blend_space->get_blend_point_node(selected_point), blend_space->get_blend_point_position(selected_point), selected_point);
|
||||
@ -529,6 +535,7 @@ void AnimationNodeBlendSpace1DEditor::_edit_point_pos(double) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move BlendSpace1D Node Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_blend_point_position", selected_point, edit_value->get_value());
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_blend_point_position", selected_point, blend_space->get_blend_point_position(selected_point));
|
||||
@ -762,8 +769,6 @@ AnimationNodeBlendSpace1DEditor::AnimationNodeBlendSpace1DEditor() {
|
||||
error_panel->add_child(error_label);
|
||||
error_label->set_text("hmmm");
|
||||
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
menu = memnew(PopupMenu);
|
||||
add_child(menu);
|
||||
menu->connect("id_pressed", callable_mp(this, &AnimationNodeBlendSpace1DEditor::_add_menu_type));
|
||||
@ -778,7 +783,6 @@ AnimationNodeBlendSpace1DEditor::AnimationNodeBlendSpace1DEditor() {
|
||||
open_file->set_title(TTR("Open Animation Node"));
|
||||
open_file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
|
||||
open_file->connect("file_selected", callable_mp(this, &AnimationNodeBlendSpace1DEditor::_file_opened));
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
set_custom_minimum_size(Size2(0, 150 * EDSCALE));
|
||||
}
|
||||
|
@ -80,8 +80,6 @@ class AnimationNodeBlendSpace1DEditor : public AnimationTreeNodeEditorPlugin {
|
||||
|
||||
bool updating = false;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
static AnimationNodeBlendSpace1DEditor *singleton;
|
||||
|
||||
void _blend_space_gui_input(const Ref<InputEvent> &p_event);
|
||||
|
@ -222,6 +222,7 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Triangle"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "add_triangle", making_triangle[0], making_triangle[1], making_triangle[2]);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "remove_triangle", blend_space->get_triangle_count());
|
||||
@ -247,6 +248,7 @@ void AnimationNodeBlendSpace2DEditor::_blend_space_gui_input(const Ref<InputEven
|
||||
|
||||
if (!read_only) {
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move Node Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_blend_point_position", selected_point, point);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_blend_point_position", selected_point, blend_space->get_blend_point_position(selected_point));
|
||||
@ -354,6 +356,7 @@ void AnimationNodeBlendSpace2DEditor::_add_menu_type(int p_index) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Node Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "add_blend_point", node, add_point_pos);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "remove_blend_point", blend_space->get_blend_point_count());
|
||||
@ -372,6 +375,7 @@ void AnimationNodeBlendSpace2DEditor::_add_animation_type(int p_index) {
|
||||
anim->set_animation(animations_to_add[p_index]);
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Animation Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "add_blend_point", anim, add_point_pos);
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "remove_blend_point", blend_space->get_blend_point_count());
|
||||
@ -661,6 +665,7 @@ void AnimationNodeBlendSpace2DEditor::_config_changed(double) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change BlendSpace2D Config"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_max_space", Vector2(max_x_value->get_value(), max_y_value->get_value()));
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_max_space", blend_space->get_max_space());
|
||||
@ -686,6 +691,7 @@ void AnimationNodeBlendSpace2DEditor::_labels_changed(String) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change BlendSpace2D Labels"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_x_label", label_x->get_text());
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_x_label", blend_space->get_x_label());
|
||||
@ -698,6 +704,7 @@ void AnimationNodeBlendSpace2DEditor::_labels_changed(String) {
|
||||
}
|
||||
|
||||
void AnimationNodeBlendSpace2DEditor::_erase_selected() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (selected_point != -1) {
|
||||
updating = true;
|
||||
undo_redo->create_action(TTR("Remove BlendSpace2D Point"));
|
||||
@ -760,6 +767,7 @@ void AnimationNodeBlendSpace2DEditor::_edit_point_pos(double) {
|
||||
return;
|
||||
}
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move Node Point"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_blend_point_position", selected_point, Vector2(edit_x->get_value(), edit_y->get_value()));
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_blend_point_position", selected_point, blend_space->get_blend_point_position(selected_point));
|
||||
@ -836,6 +844,7 @@ void AnimationNodeBlendSpace2DEditor::_removed_from_graph() {
|
||||
}
|
||||
|
||||
void AnimationNodeBlendSpace2DEditor::_auto_triangles_toggled() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Toggle Auto Triangles"));
|
||||
undo_redo->add_do_method(blend_space.ptr(), "set_auto_triangles", auto_triangles->is_pressed());
|
||||
undo_redo->add_undo_method(blend_space.ptr(), "set_auto_triangles", blend_space->get_auto_triangles());
|
||||
@ -1059,8 +1068,6 @@ AnimationNodeBlendSpace2DEditor::AnimationNodeBlendSpace2DEditor() {
|
||||
error_panel->add_child(error_label);
|
||||
error_label->set_text("eh");
|
||||
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
set_custom_minimum_size(Size2(0, 300 * EDSCALE));
|
||||
|
||||
menu = memnew(PopupMenu);
|
||||
@ -1077,7 +1084,6 @@ AnimationNodeBlendSpace2DEditor::AnimationNodeBlendSpace2DEditor() {
|
||||
open_file->set_title(TTR("Open Animation Node"));
|
||||
open_file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
|
||||
open_file->connect("file_selected", callable_mp(this, &AnimationNodeBlendSpace2DEditor::_file_opened));
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
selected_point = -1;
|
||||
selected_triangle = -1;
|
||||
|
@ -44,8 +44,6 @@ class CheckBox;
|
||||
class OptionButton;
|
||||
class PanelContainer;
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class AnimationNodeBlendSpace2DEditor : public AnimationTreeNodeEditorPlugin {
|
||||
GDCLASS(AnimationNodeBlendSpace2DEditor, AnimationTreeNodeEditorPlugin);
|
||||
|
||||
@ -89,8 +87,6 @@ class AnimationNodeBlendSpace2DEditor : public AnimationTreeNodeEditorPlugin {
|
||||
|
||||
bool updating;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
static AnimationNodeBlendSpace2DEditor *singleton;
|
||||
|
||||
void _blend_space_gui_input(const Ref<InputEvent> &p_event);
|
||||
|
@ -98,6 +98,7 @@ Size2 AnimationNodeBlendTreeEditor::get_minimum_size() const {
|
||||
void AnimationNodeBlendTreeEditor::_property_changed(const StringName &p_property, const Variant &p_value, const String &p_field, bool p_changing) {
|
||||
AnimationTree *tree = AnimationTreeEditor::get_singleton()->get_animation_tree();
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Parameter Changed:") + " " + String(p_property), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_property(tree, p_property, p_value);
|
||||
undo_redo->add_undo_property(tree, p_property, tree->get(p_property));
|
||||
@ -353,6 +354,7 @@ void AnimationNodeBlendTreeEditor::_add_node(int p_idx) {
|
||||
name = base_name + " " + itos(base);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Node to BlendTree"));
|
||||
undo_redo->add_do_method(blend_tree.ptr(), "add_node", name, anode, instance_pos / EDSCALE);
|
||||
undo_redo->add_undo_method(blend_tree.ptr(), "remove_node", name);
|
||||
@ -416,6 +418,7 @@ void AnimationNodeBlendTreeEditor::_connection_from_empty(const String &p_to, in
|
||||
|
||||
void AnimationNodeBlendTreeEditor::_node_dragged(const Vector2 &p_from, const Vector2 &p_to, const StringName &p_which) {
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Node Moved"));
|
||||
undo_redo->add_do_method(blend_tree.ptr(), "set_node_position", p_which, p_to / EDSCALE);
|
||||
undo_redo->add_undo_method(blend_tree.ptr(), "set_node_position", p_which, p_from / EDSCALE);
|
||||
@ -437,6 +440,7 @@ void AnimationNodeBlendTreeEditor::_connection_request(const String &p_from, int
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Nodes Connected"));
|
||||
undo_redo->add_do_method(blend_tree.ptr(), "connect_node", p_to, p_to_index, p_from);
|
||||
undo_redo->add_undo_method(blend_tree.ptr(), "disconnect_node", p_to, p_to_index);
|
||||
@ -453,6 +457,7 @@ void AnimationNodeBlendTreeEditor::_disconnection_request(const String &p_from,
|
||||
graph->disconnect_node(p_from, p_from_index, p_to, p_to_index);
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Nodes Disconnected"));
|
||||
undo_redo->add_do_method(blend_tree.ptr(), "disconnect_node", p_to, p_to_index);
|
||||
undo_redo->add_undo_method(blend_tree.ptr(), "connect_node", p_to, p_to_index, p_from);
|
||||
@ -468,6 +473,7 @@ void AnimationNodeBlendTreeEditor::_anim_selected(int p_index, Array p_options,
|
||||
Ref<AnimationNodeAnimation> anim = blend_tree->get_node(p_node);
|
||||
ERR_FAIL_COND(!anim.is_valid());
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Animation"));
|
||||
undo_redo->add_do_method(anim.ptr(), "set_animation", option);
|
||||
undo_redo->add_undo_method(anim.ptr(), "set_animation", anim->get_animation());
|
||||
@ -481,6 +487,7 @@ void AnimationNodeBlendTreeEditor::_delete_request(const String &p_which) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete Node"));
|
||||
undo_redo->add_do_method(blend_tree.ptr(), "remove_node", p_which);
|
||||
undo_redo->add_undo_method(blend_tree.ptr(), "add_node", p_which, blend_tree->get_node(p_which), blend_tree.ptr()->get_node_position(p_which));
|
||||
@ -525,6 +532,7 @@ void AnimationNodeBlendTreeEditor::_delete_nodes_request(const TypedArray<String
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete Node(s)"));
|
||||
|
||||
for (const StringName &F : to_erase) {
|
||||
@ -558,6 +566,7 @@ void AnimationNodeBlendTreeEditor::_open_in_editor(const String &p_which) {
|
||||
|
||||
void AnimationNodeBlendTreeEditor::_filter_toggled() {
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Toggle Filter On/Off"));
|
||||
undo_redo->add_do_method(_filter_edit.ptr(), "set_filter_enabled", filter_enabled->is_pressed());
|
||||
undo_redo->add_undo_method(_filter_edit.ptr(), "set_filter_enabled", _filter_edit->is_filter_enabled());
|
||||
@ -575,6 +584,7 @@ void AnimationNodeBlendTreeEditor::_filter_edited() {
|
||||
bool filtered = edited->is_checked(0);
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Filter"));
|
||||
undo_redo->add_do_method(_filter_edit.ptr(), "set_filter_path", edited_path, filtered);
|
||||
undo_redo->add_undo_method(_filter_edit.ptr(), "set_filter_path", edited_path, _filter_edit->is_path_filtered(edited_path));
|
||||
@ -949,6 +959,7 @@ void AnimationNodeBlendTreeEditor::_node_renamed(const String &p_text, Ref<Anima
|
||||
String base_path = AnimationTreeEditor::get_singleton()->get_base_path();
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Node Renamed"));
|
||||
undo_redo->add_do_method(blend_tree.ptr(), "rename_node", prev_name, name);
|
||||
undo_redo->add_undo_method(blend_tree.ptr(), "rename_node", name, prev_name);
|
||||
@ -1117,5 +1128,4 @@ AnimationNodeBlendTreeEditor::AnimationNodeBlendTreeEditor() {
|
||||
open_file->set_title(TTR("Open Animation Node"));
|
||||
open_file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
|
||||
open_file->connect("file_selected", callable_mp(this, &AnimationNodeBlendTreeEditor::_file_opened));
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
}
|
||||
|
@ -44,7 +44,6 @@ class CheckBox;
|
||||
class ProgressBar;
|
||||
class EditorFileDialog;
|
||||
class EditorProperty;
|
||||
class EditorUndoRedoManager;
|
||||
class MenuButton;
|
||||
class PanelContainer;
|
||||
|
||||
@ -63,8 +62,6 @@ class AnimationNodeBlendTreeEditor : public AnimationTreeNodeEditorPlugin {
|
||||
PanelContainer *error_panel = nullptr;
|
||||
Label *error_label = nullptr;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
AcceptDialog *filter_dialog = nullptr;
|
||||
Tree *filters = nullptr;
|
||||
CheckBox *filter_enabled = nullptr;
|
||||
|
@ -93,7 +93,7 @@ void AnimationLibraryEditor::_add_library_validate(const String &p_name) {
|
||||
void AnimationLibraryEditor::_add_library_confirm() {
|
||||
if (adding_animation) {
|
||||
String anim_name = add_library_name->get_text();
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
Ref<AnimationLibrary> al = player->call("get_animation_library", adding_animation_to_library);
|
||||
ERR_FAIL_COND(!al.is_valid());
|
||||
@ -110,7 +110,7 @@ void AnimationLibraryEditor::_add_library_confirm() {
|
||||
|
||||
} else {
|
||||
String lib_name = add_library_name->get_text();
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
Ref<AnimationLibrary> al;
|
||||
al.instantiate();
|
||||
@ -210,7 +210,7 @@ void AnimationLibraryEditor::_file_popup_selected(int p_id) {
|
||||
ald->add_animation(animation_name, animation);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Make Animation Library Unique: %s"), lib_name));
|
||||
undo_redo->add_do_method(player, "remove_animation_library", lib_name);
|
||||
undo_redo->add_do_method(player, "add_animation_library", lib_name, ald);
|
||||
@ -279,7 +279,7 @@ void AnimationLibraryEditor::_file_popup_selected(int p_id) {
|
||||
|
||||
Ref<Animation> animd = anim->duplicate();
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Make Animation Unique: %s"), anim_name));
|
||||
undo_redo->add_do_method(al.ptr(), "remove_animation", anim_name);
|
||||
undo_redo->add_do_method(al.ptr(), "add_animation", anim_name, animd);
|
||||
@ -327,7 +327,7 @@ void AnimationLibraryEditor::_load_file(String p_path) {
|
||||
name = p_path.get_file().get_basename() + " " + itos(attempt);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
undo_redo->create_action(vformat(TTR("Add Animation Library: %s"), name));
|
||||
undo_redo->add_do_method(player, "add_animation_library", name, al);
|
||||
@ -365,7 +365,7 @@ void AnimationLibraryEditor::_load_file(String p_path) {
|
||||
name = p_path.get_file().get_basename() + " " + itos(attempt);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
undo_redo->create_action(vformat(TTR("Load Animation into Library: %s"), name));
|
||||
undo_redo->add_do_method(al.ptr(), "add_animation", name, anim);
|
||||
@ -381,7 +381,7 @@ void AnimationLibraryEditor::_load_file(String p_path) {
|
||||
EditorNode::get_singleton()->save_resource_in_path(al, p_path);
|
||||
|
||||
if (al->get_path() != prev_path) { // Save successful.
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
undo_redo->create_action(vformat(TTR("Save Animation library to File: %s"), file_dialog_library));
|
||||
undo_redo->add_do_method(al.ptr(), "set_path", al->get_path());
|
||||
@ -402,7 +402,7 @@ void AnimationLibraryEditor::_load_file(String p_path) {
|
||||
String prev_path = anim->get_path();
|
||||
EditorNode::get_singleton()->save_resource_in_path(anim, p_path);
|
||||
if (anim->get_path() != prev_path) { // Save successful.
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
undo_redo->create_action(vformat(TTR("Save Animation to File: %s"), file_dialog_animation));
|
||||
undo_redo->add_do_method(anim.ptr(), "set_path", anim->get_path());
|
||||
@ -420,7 +420,7 @@ void AnimationLibraryEditor::_item_renamed() {
|
||||
String text = ti->get_text(0);
|
||||
String old_text = ti->get_metadata(0);
|
||||
bool restore_text = false;
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
if (String(text).contains("/") || String(text).contains(":") || String(text).contains(",") || String(text).contains("[")) {
|
||||
restore_text = true;
|
||||
@ -534,7 +534,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
|
||||
name = base_name + " (" + itos(attempt) + ")";
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
undo_redo->create_action(vformat(TTR("Add Animation to Library: %s"), name));
|
||||
undo_redo->add_do_method(al.ptr(), "add_animation", name, anim);
|
||||
@ -560,7 +560,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
|
||||
file_dialog_library = lib_name;
|
||||
} break;
|
||||
case LIB_BUTTON_DELETE: {
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Remove Animation Library: %s"), lib_name));
|
||||
undo_redo->add_do_method(player, "remove_animation_library", lib_name);
|
||||
undo_redo->add_undo_method(player, "add_animation_library", lib_name, al);
|
||||
@ -601,7 +601,7 @@ void AnimationLibraryEditor::_button_pressed(TreeItem *p_item, int p_column, int
|
||||
|
||||
} break;
|
||||
case ANIM_BUTTON_DELETE: {
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Remove Animation from Library: %s"), anim_name));
|
||||
undo_redo->add_do_method(al.ptr(), "remove_animation", anim_name);
|
||||
undo_redo->add_undo_method(al.ptr(), "add_animation", anim_name, anim);
|
||||
|
@ -238,6 +238,7 @@ void AnimationNodeStateMachineEditor::_state_machine_gui_input(const Ref<InputEv
|
||||
Ref<AnimationNode> an = state_machine->get_node(selected_node);
|
||||
updating = true;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Move Node"));
|
||||
|
||||
for (int i = 0; i < node_rects.size(); i++) {
|
||||
@ -534,6 +535,7 @@ void AnimationNodeStateMachineEditor::_group_selected_nodes() {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action("Group");
|
||||
|
||||
// Move selected nodes to the new state machine
|
||||
@ -648,6 +650,7 @@ void AnimationNodeStateMachineEditor::_ungroup_selected_nodes() {
|
||||
Vector<TransitionUR> transitions_ur;
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action("Ungroup");
|
||||
|
||||
// Move all child nodes to current state machine
|
||||
@ -921,6 +924,7 @@ void AnimationNodeStateMachineEditor::_stop_connecting() {
|
||||
|
||||
void AnimationNodeStateMachineEditor::_delete_selected() {
|
||||
TreeItem *item = delete_tree->get_next_selected(nullptr);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
while (item) {
|
||||
if (!updating) {
|
||||
updating = true;
|
||||
@ -948,6 +952,7 @@ void AnimationNodeStateMachineEditor::_delete_all() {
|
||||
selected_multi_transition = TransitionLine();
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action("Transition(s) Removed");
|
||||
_erase_selected(true);
|
||||
for (int i = 0; i < multi_transitions.size(); i++) {
|
||||
@ -1027,6 +1032,7 @@ void AnimationNodeStateMachineEditor::_add_menu_type(int p_index) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Node and Transition"));
|
||||
undo_redo->add_do_method(state_machine.ptr(), "add_node", name, node, add_node_pos);
|
||||
undo_redo->add_undo_method(state_machine.ptr(), "remove_node", name);
|
||||
@ -1053,6 +1059,7 @@ void AnimationNodeStateMachineEditor::_add_animation_type(int p_index) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Node and Transition"));
|
||||
undo_redo->add_do_method(state_machine.ptr(), "add_node", name, anim, add_node_pos);
|
||||
undo_redo->add_undo_method(state_machine.ptr(), "remove_node", name);
|
||||
@ -1081,6 +1088,7 @@ void AnimationNodeStateMachineEditor::_add_transition(const bool p_nested_action
|
||||
tr.instantiate();
|
||||
tr->set_switch_mode(AnimationNodeStateMachineTransition::SwitchMode(transition_mode->get_selected()));
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (!p_nested_action) {
|
||||
updating = true;
|
||||
undo_redo->create_action(TTR("Add Transition"));
|
||||
@ -1745,6 +1753,7 @@ void AnimationNodeStateMachineEditor::_name_edited(const String &p_text) {
|
||||
}
|
||||
|
||||
updating = true;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Node Renamed"));
|
||||
undo_redo->add_do_method(state_machine.ptr(), "rename_node", prev_name, name);
|
||||
undo_redo->add_undo_method(state_machine.ptr(), "rename_node", name, prev_name);
|
||||
@ -1779,6 +1788,7 @@ void AnimationNodeStateMachineEditor::_erase_selected(const bool p_nested_action
|
||||
if (!p_nested_action) {
|
||||
updating = true;
|
||||
}
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Node Removed"));
|
||||
|
||||
for (int i = 0; i < node_rects.size(); i++) {
|
||||
@ -1847,6 +1857,7 @@ void AnimationNodeStateMachineEditor::_erase_selected(const bool p_nested_action
|
||||
if (!p_nested_action) {
|
||||
updating = true;
|
||||
}
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Transition Removed"));
|
||||
undo_redo->add_do_method(state_machine.ptr(), "remove_transition", selected_transition_from, selected_transition_to);
|
||||
undo_redo->add_undo_method(state_machine.ptr(), "add_transition", selected_transition_from, selected_transition_to, tr);
|
||||
@ -2013,8 +2024,6 @@ AnimationNodeStateMachineEditor::AnimationNodeStateMachineEditor() {
|
||||
error_panel->add_child(error_label);
|
||||
error_panel->hide();
|
||||
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
set_custom_minimum_size(Size2(0, 300 * EDSCALE));
|
||||
|
||||
menu = memnew(PopupMenu);
|
||||
@ -2055,7 +2064,6 @@ AnimationNodeStateMachineEditor::AnimationNodeStateMachineEditor() {
|
||||
open_file->set_title(TTR("Open Animation Node"));
|
||||
open_file->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE);
|
||||
open_file->connect("file_selected", callable_mp(this, &AnimationNodeStateMachineEditor::_file_opened));
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
delete_window = memnew(ConfirmationDialog);
|
||||
delete_window->set_flag(Window::FLAG_RESIZE_DISABLED, true);
|
||||
|
@ -39,7 +39,6 @@
|
||||
|
||||
class ConfirmationDialog;
|
||||
class EditorFileDialog;
|
||||
class EditorUndoRedoManager;
|
||||
class OptionButton;
|
||||
class PanelContainer;
|
||||
|
||||
@ -80,8 +79,6 @@ class AnimationNodeStateMachineEditor : public AnimationTreeNodeEditorPlugin {
|
||||
|
||||
bool updating = false;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
static AnimationNodeStateMachineEditor *singleton;
|
||||
|
||||
void _state_machine_gui_input(const Ref<InputEvent> &p_event);
|
||||
|
@ -77,6 +77,7 @@ bool Cast2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_event) {
|
||||
return false;
|
||||
}
|
||||
} else if (pressed) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set target_position"));
|
||||
undo_redo->add_do_property(node, "target_position", target_position);
|
||||
undo_redo->add_do_method(canvas_item_editor, "update_viewport");
|
||||
@ -130,10 +131,6 @@ void Cast2DEditor::edit(Node2D *p_node) {
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
|
||||
Cast2DEditor::Cast2DEditor() {
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
|
||||
void Cast2DEditorPlugin::edit(Object *p_object) {
|
||||
|
@ -35,12 +35,10 @@
|
||||
#include "scene/2d/node_2d.h"
|
||||
|
||||
class CanvasItemEditor;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class Cast2DEditor : public Control {
|
||||
GDCLASS(Cast2DEditor, Control);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
CanvasItemEditor *canvas_item_editor = nullptr;
|
||||
Node2D *node = nullptr;
|
||||
|
||||
@ -55,8 +53,6 @@ public:
|
||||
bool forward_canvas_gui_input(const Ref<InputEvent> &p_event);
|
||||
void forward_canvas_draw_over_viewport(Control *p_overlay);
|
||||
void edit(Node2D *p_node);
|
||||
|
||||
Cast2DEditor();
|
||||
};
|
||||
|
||||
class Cast2DEditorPlugin : public EditorPlugin {
|
||||
|
@ -219,6 +219,7 @@ void CollisionShape2DEditor::set_handle(int idx, Point2 &p_point) {
|
||||
}
|
||||
|
||||
void CollisionShape2DEditor::commit_handle(int idx, Variant &p_org) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Handle"));
|
||||
|
||||
switch (shape_type) {
|
||||
@ -588,8 +589,6 @@ CollisionShape2DEditor::CollisionShape2DEditor() {
|
||||
node = nullptr;
|
||||
canvas_item_editor = nullptr;
|
||||
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
edit_handle = -1;
|
||||
pressed = false;
|
||||
|
||||
|
@ -35,7 +35,6 @@
|
||||
#include "scene/2d/collision_shape_2d.h"
|
||||
|
||||
class CanvasItemEditor;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class CollisionShape2DEditor : public Control {
|
||||
GDCLASS(CollisionShape2DEditor, Control);
|
||||
@ -62,7 +61,6 @@ class CollisionShape2DEditor : public Control {
|
||||
Point2(1, -1),
|
||||
};
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
CanvasItemEditor *canvas_item_editor = nullptr;
|
||||
CollisionShape2D *node = nullptr;
|
||||
|
||||
|
@ -721,6 +721,7 @@ void ControlEditorToolbar::_anchors_preset_selected(int p_preset) {
|
||||
LayoutPreset preset = (LayoutPreset)p_preset;
|
||||
List<Node *> selection = editor_selection->get_selected_node_list();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Anchors, Offsets, Grow Direction"));
|
||||
|
||||
for (Node *E : selection) {
|
||||
@ -740,6 +741,7 @@ void ControlEditorToolbar::_anchors_preset_selected(int p_preset) {
|
||||
void ControlEditorToolbar::_anchors_to_current_ratio() {
|
||||
List<Node *> selection = editor_selection->get_selected_node_list();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Anchors, Offsets (Keep Ratio)"));
|
||||
|
||||
for (Node *E : selection) {
|
||||
@ -790,6 +792,7 @@ void ControlEditorToolbar::_anchor_mode_toggled(bool p_status) {
|
||||
void ControlEditorToolbar::_container_flags_selected(int p_flags, bool p_vertical) {
|
||||
List<Node *> selection = editor_selection->get_selected_node_list();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (p_vertical) {
|
||||
undo_redo->create_action(TTR("Change Vertical Size Flags"));
|
||||
} else {
|
||||
@ -1025,7 +1028,6 @@ ControlEditorToolbar::ControlEditorToolbar() {
|
||||
container_v_picker->connect("size_flags_selected", callable_mp(this, &ControlEditorToolbar::_container_flags_selected).bind(true));
|
||||
|
||||
// Editor connections.
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
editor_selection = EditorNode::get_singleton()->get_editor_selection();
|
||||
editor_selection->add_editor_plugin(this);
|
||||
editor_selection->connect("selection_changed", callable_mp(this, &ControlEditorToolbar::_selection_changed));
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include "scene/gui/separator.h"
|
||||
#include "scene/gui/texture_rect.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
class GridContainer;
|
||||
|
||||
// Inspector controls.
|
||||
@ -207,7 +206,6 @@ public:
|
||||
class ControlEditorToolbar : public HBoxContainer {
|
||||
GDCLASS(ControlEditorToolbar, HBoxContainer);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
EditorSelection *editor_selection = nullptr;
|
||||
|
||||
ControlEditorPopupButton *anchors_button = nullptr;
|
||||
|
@ -34,7 +34,6 @@
|
||||
#include "core/io/image_loader.h"
|
||||
#include "editor/editor_file_dialog.h"
|
||||
#include "editor/editor_node.h"
|
||||
#include "editor/editor_undo_redo_manager.h"
|
||||
#include "scene/2d/cpu_particles_2d.h"
|
||||
#include "scene/gui/separator.h"
|
||||
#include "scene/resources/particle_process_material.h"
|
||||
@ -239,7 +238,6 @@ void CPUParticles2DEditorPlugin::_bind_methods() {
|
||||
|
||||
CPUParticles2DEditorPlugin::CPUParticles2DEditorPlugin() {
|
||||
particles = nullptr;
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
toolbar = memnew(HBoxContainer);
|
||||
add_control_to_container(CONTAINER_CANVAS_EDITOR_MENU, toolbar);
|
||||
|
@ -40,7 +40,6 @@ class CheckBox;
|
||||
class ConfirmationDialog;
|
||||
class SpinBox;
|
||||
class EditorFileDialog;
|
||||
class EditorUndoRedoManager;
|
||||
class MenuButton;
|
||||
class OptionButton;
|
||||
|
||||
@ -74,7 +73,6 @@ class CPUParticles2DEditorPlugin : public EditorPlugin {
|
||||
|
||||
String source_emission_file;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
void _file_selected(const String &p_file);
|
||||
void _menu_callback(int p_idx);
|
||||
void _generate_emission_mask();
|
||||
|
@ -160,6 +160,7 @@ void GPUParticles2DEditorPlugin::_generate_visibility_rect() {
|
||||
particles->set_emitting(false);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Generate Visibility Rect"));
|
||||
undo_redo->add_do_method(particles, "set_visibility_rect", rect);
|
||||
undo_redo->add_undo_method(particles, "set_visibility_rect", particles->get_visibility_rect());
|
||||
@ -359,7 +360,6 @@ void GPUParticles2DEditorPlugin::_bind_methods() {
|
||||
|
||||
GPUParticles2DEditorPlugin::GPUParticles2DEditorPlugin() {
|
||||
particles = nullptr;
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
toolbar = memnew(HBoxContainer);
|
||||
add_control_to_container(CONTAINER_CANVAS_EDITOR_MENU, toolbar);
|
||||
|
@ -40,7 +40,6 @@
|
||||
class CheckBox;
|
||||
class ConfirmationDialog;
|
||||
class EditorFileDialog;
|
||||
class EditorUndoRedoManager;
|
||||
class MenuButton;
|
||||
class OptionButton;
|
||||
|
||||
@ -80,7 +79,6 @@ class GPUParticles2DEditorPlugin : public EditorPlugin {
|
||||
|
||||
String source_emission_file;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
void _file_selected(const String &p_file);
|
||||
void _menu_callback(int p_idx);
|
||||
void _generate_visibility_rect();
|
||||
|
@ -55,6 +55,7 @@ void GradientTexture2DEditorRect::_update_fill_position() {
|
||||
|
||||
String property_name = handle == HANDLE_FILL_FROM ? "fill_from" : "fill_to";
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Set %s"), property_name), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_property(texture.ptr(), property_name, percent);
|
||||
undo_redo->add_undo_property(texture.ptr(), property_name, handle == HANDLE_FILL_FROM ? texture->get_fill_from() : texture->get_fill_to());
|
||||
@ -175,8 +176,6 @@ void GradientTexture2DEditorRect::_notification(int p_what) {
|
||||
}
|
||||
|
||||
GradientTexture2DEditorRect::GradientTexture2DEditorRect() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
checkerboard = memnew(TextureRect);
|
||||
checkerboard->set_stretch_mode(TextureRect::STRETCH_TILE);
|
||||
checkerboard->set_ignore_texture_size(true);
|
||||
@ -189,6 +188,7 @@ GradientTexture2DEditorRect::GradientTexture2DEditorRect() {
|
||||
///////////////////////
|
||||
|
||||
void GradientTexture2DEditor::_reverse_button_pressed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Swap GradientTexture2D Fill Points"));
|
||||
undo_redo->add_do_property(texture.ptr(), "fill_from", texture->get_fill_to());
|
||||
undo_redo->add_do_property(texture.ptr(), "fill_to", texture->get_fill_from());
|
||||
@ -223,8 +223,6 @@ void GradientTexture2DEditor::_notification(int p_what) {
|
||||
}
|
||||
|
||||
GradientTexture2DEditor::GradientTexture2DEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
HFlowContainer *toolbar = memnew(HFlowContainer);
|
||||
add_child(toolbar);
|
||||
|
||||
|
@ -35,8 +35,6 @@
|
||||
#include "editor/editor_plugin.h"
|
||||
#include "editor/editor_spin_slider.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class GradientTexture2DEditorRect : public Control {
|
||||
GDCLASS(GradientTexture2DEditorRect, Control);
|
||||
|
||||
@ -47,7 +45,6 @@ class GradientTexture2DEditorRect : public Control {
|
||||
};
|
||||
|
||||
Ref<GradientTexture2D> texture;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
bool snap_enabled = false;
|
||||
float snap_size = 0;
|
||||
|
||||
@ -77,7 +74,6 @@ class GradientTexture2DEditor : public VBoxContainer {
|
||||
GDCLASS(GradientTexture2DEditor, VBoxContainer);
|
||||
|
||||
Ref<GradientTexture2D> texture;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
Button *reverse_button = nullptr;
|
||||
Button *snap_button = nullptr;
|
||||
|
@ -271,7 +271,7 @@ void MeshInstance3DEditor::_menu_option(int p_option) {
|
||||
outline_dialog->popup_centered(Vector2(200, 90));
|
||||
} break;
|
||||
case MENU_OPTION_CREATE_DEBUG_TANGENTS: {
|
||||
Ref<EditorUndoRedoManager> ur = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &ur = EditorNode::get_singleton()->get_undo_redo();
|
||||
ur->create_action(TTR("Create Debug Tangents"));
|
||||
|
||||
MeshInstance3D *tangents = node->create_debug_tangents_node();
|
||||
|
@ -85,6 +85,7 @@ bool NavigationLink2DEditor::forward_canvas_gui_input(const Ref<InputEvent> &p_e
|
||||
end_grabbed = false;
|
||||
}
|
||||
} else {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (start_grabbed) {
|
||||
undo_redo->create_action(TTR("Set start_location"));
|
||||
undo_redo->add_do_method(node, "set_start_location", node->get_start_location());
|
||||
@ -165,10 +166,6 @@ void NavigationLink2DEditor::edit(NavigationLink2D *p_node) {
|
||||
canvas_item_editor->update_viewport();
|
||||
}
|
||||
|
||||
NavigationLink2DEditor::NavigationLink2DEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
}
|
||||
|
||||
///////////////////////
|
||||
|
||||
void NavigationLink2DEditorPlugin::edit(Object *p_object) {
|
||||
|
@ -35,12 +35,10 @@
|
||||
#include "scene/2d/navigation_link_2d.h"
|
||||
|
||||
class CanvasItemEditor;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class NavigationLink2DEditor : public Control {
|
||||
GDCLASS(NavigationLink2DEditor, Control);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
CanvasItemEditor *canvas_item_editor = nullptr;
|
||||
NavigationLink2D *node = nullptr;
|
||||
|
||||
@ -58,8 +56,6 @@ public:
|
||||
bool forward_canvas_gui_input(const Ref<InputEvent> &p_event);
|
||||
void forward_canvas_draw_over_viewport(Control *p_overlay);
|
||||
void edit(NavigationLink2D *p_node);
|
||||
|
||||
NavigationLink2DEditor();
|
||||
};
|
||||
|
||||
class NavigationLink2DEditorPlugin : public EditorPlugin {
|
||||
|
@ -119,6 +119,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
||||
}
|
||||
|
||||
// Check for point deletion.
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if ((mb->get_button_index() == MouseButton::RIGHT && mode == MODE_EDIT) || (mb->get_button_index() == MouseButton::LEFT && mode == MODE_DELETE)) {
|
||||
if (dist_to_p < grab_threshold) {
|
||||
undo_redo->create_action(TTR("Remove Point from Curve"));
|
||||
@ -153,6 +154,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
||||
if (mb->is_pressed() && mb->get_button_index() == MouseButton::LEFT && ((mb->is_command_or_control_pressed() && mode == MODE_EDIT) || mode == MODE_CREATE)) {
|
||||
Ref<Curve2D> curve = node->get_curve();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Point to Curve"));
|
||||
undo_redo->add_do_method(curve.ptr(), "add_point", cpoint);
|
||||
undo_redo->add_undo_method(curve.ptr(), "remove_point", curve->get_point_count());
|
||||
@ -188,6 +190,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
||||
insertion_point = curve->get_point_count() - 2;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Split Curve"));
|
||||
undo_redo->add_do_method(curve.ptr(), "add_point", xform.affine_inverse().xform(gpoint2), Vector2(0, 0), Vector2(0, 0), insertion_point + 1);
|
||||
undo_redo->add_undo_method(curve.ptr(), "remove_point", insertion_point + 1);
|
||||
@ -211,6 +214,7 @@ bool Path2DEditor::forward_gui_input(const Ref<InputEvent> &p_event) {
|
||||
if (!mb->is_pressed() && mb->get_button_index() == MouseButton::LEFT && action != ACTION_NONE) {
|
||||
Ref<Curve2D> curve = node->get_curve();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
Vector2 new_pos = moving_from + xform.affine_inverse().basis_xform(gpoint - moving_screen_from);
|
||||
switch (action) {
|
||||
case ACTION_NONE:
|
||||
@ -486,6 +490,7 @@ void Path2DEditor::_mode_selected(int p_mode) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove Point from Curve"));
|
||||
undo_redo->add_do_method(node->get_curve().ptr(), "add_point", begin);
|
||||
undo_redo->add_undo_method(node->get_curve().ptr(), "remove_point", node->get_curve()->get_point_count());
|
||||
@ -519,7 +524,6 @@ void Path2DEditor::_handle_option_pressed(int p_option) {
|
||||
|
||||
Path2DEditor::Path2DEditor() {
|
||||
canvas_item_editor = nullptr;
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
mirror_handle_angle = true;
|
||||
mirror_handle_length = true;
|
||||
on_edge = false;
|
||||
|
@ -37,14 +37,11 @@
|
||||
#include "scene/gui/separator.h"
|
||||
|
||||
class CanvasItemEditor;
|
||||
class EditorUndoRedoManager;
|
||||
class MenuButton;
|
||||
|
||||
class Path2DEditor : public HBoxContainer {
|
||||
GDCLASS(Path2DEditor, HBoxContainer);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
CanvasItemEditor *canvas_item_editor = nullptr;
|
||||
Panel *panel = nullptr;
|
||||
Path2D *node = nullptr;
|
||||
|
@ -95,6 +95,7 @@ void Polygon3DEditor::_menu_option(int p_option) {
|
||||
void Polygon3DEditor::_wip_close() {
|
||||
Object *obj = node_resource.is_valid() ? (Object *)node_resource.ptr() : node;
|
||||
ERR_FAIL_COND_MSG(!obj, "Edited object is not valid.");
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Create Polygon3D"));
|
||||
undo_redo->add_undo_method(obj, "set_polygon", obj->call("get_polygon"));
|
||||
undo_redo->add_do_method(obj, "set_polygon", wip);
|
||||
@ -184,6 +185,7 @@ EditorPlugin::AfterGUIInput Polygon3DEditor::forward_3d_gui_input(Camera3D *p_ca
|
||||
if (mb->is_pressed()) {
|
||||
if (mb->is_ctrl_pressed()) {
|
||||
if (poly.size() < 3) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Edit Poly"));
|
||||
undo_redo->add_undo_method(obj, "set_polygon", poly);
|
||||
poly.push_back(cpoint);
|
||||
@ -262,6 +264,7 @@ EditorPlugin::AfterGUIInput Polygon3DEditor::forward_3d_gui_input(Camera3D *p_ca
|
||||
|
||||
ERR_FAIL_INDEX_V(edited_point, poly.size(), EditorPlugin::AFTER_GUI_INPUT_PASS);
|
||||
poly.write[edited_point] = edited_point_pos;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Edit Poly"));
|
||||
undo_redo->add_do_method(obj, "set_polygon", poly);
|
||||
undo_redo->add_undo_method(obj, "set_polygon", pre_move_edit);
|
||||
@ -290,6 +293,7 @@ EditorPlugin::AfterGUIInput Polygon3DEditor::forward_3d_gui_input(Camera3D *p_ca
|
||||
}
|
||||
|
||||
if (closest_idx >= 0) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Edit Poly (Remove Point)"));
|
||||
undo_redo->add_undo_method(obj, "set_polygon", poly);
|
||||
poly.remove_at(closest_idx);
|
||||
@ -527,7 +531,6 @@ void Polygon3DEditor::_bind_methods() {
|
||||
|
||||
Polygon3DEditor::Polygon3DEditor() {
|
||||
node = nullptr;
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
add_child(memnew(VSeparator));
|
||||
button_create = memnew(Button);
|
||||
|
@ -38,13 +38,11 @@
|
||||
#include "scene/resources/immediate_mesh.h"
|
||||
|
||||
class CanvasItemEditor;
|
||||
class EditorUndoRedoManager;
|
||||
class MenuButton;
|
||||
|
||||
class Polygon3DEditor : public HBoxContainer {
|
||||
GDCLASS(Polygon3DEditor, HBoxContainer);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
enum Mode {
|
||||
MODE_CREATE,
|
||||
MODE_EDIT,
|
||||
|
@ -71,6 +71,7 @@ void ResourcePreloaderEditor::_files_load_request(const Vector<String> &p_paths)
|
||||
name = basename + " " + itos(counter);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Resource"));
|
||||
undo_redo->add_do_method(preloader, "add_resource", name, resource);
|
||||
undo_redo->add_undo_method(preloader, "remove_resource", name);
|
||||
@ -115,6 +116,7 @@ void ResourcePreloaderEditor::_item_edited() {
|
||||
}
|
||||
|
||||
Ref<Resource> samp = preloader->get_resource(old_name);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Rename Resource"));
|
||||
undo_redo->add_do_method(preloader, "remove_resource", old_name);
|
||||
undo_redo->add_do_method(preloader, "add_resource", new_name, samp);
|
||||
@ -127,6 +129,7 @@ void ResourcePreloaderEditor::_item_edited() {
|
||||
}
|
||||
|
||||
void ResourcePreloaderEditor::_remove_resource(const String &p_to_remove) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete Resource"));
|
||||
undo_redo->add_do_method(preloader, "remove_resource", p_to_remove);
|
||||
undo_redo->add_undo_method(preloader, "add_resource", p_to_remove, preloader->get_resource(p_to_remove));
|
||||
@ -160,6 +163,7 @@ void ResourcePreloaderEditor::_paste_pressed() {
|
||||
name = basename + " " + itos(counter);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Paste Resource"));
|
||||
undo_redo->add_do_method(preloader, "add_resource", name, r);
|
||||
undo_redo->add_undo_method(preloader, "remove_resource", name);
|
||||
@ -235,10 +239,6 @@ void ResourcePreloaderEditor::_cell_button_pressed(Object *p_item, int p_column,
|
||||
}
|
||||
}
|
||||
|
||||
void ResourcePreloaderEditor::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
void ResourcePreloaderEditor::edit(ResourcePreloader *p_preloader) {
|
||||
preloader = p_preloader;
|
||||
|
||||
@ -322,6 +322,7 @@ void ResourcePreloaderEditor::drop_data_fw(const Point2 &p_point, const Variant
|
||||
name = basename + "_" + itos(counter);
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Resource"));
|
||||
undo_redo->add_do_method(preloader, "add_resource", name, r);
|
||||
undo_redo->add_undo_method(preloader, "remove_resource", name);
|
||||
@ -392,7 +393,6 @@ ResourcePreloaderEditor::ResourcePreloaderEditor() {
|
||||
}
|
||||
|
||||
void ResourcePreloaderEditorPlugin::edit(Object *p_object) {
|
||||
preloader_editor->set_undo_redo(EditorNode::get_undo_redo());
|
||||
ResourcePreloader *s = Object::cast_to<ResourcePreloader>(p_object);
|
||||
if (!s) {
|
||||
return;
|
||||
|
@ -38,7 +38,6 @@
|
||||
#include "scene/main/resource_preloader.h"
|
||||
|
||||
class EditorFileDialog;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class ResourcePreloaderEditor : public PanelContainer {
|
||||
GDCLASS(ResourcePreloaderEditor, PanelContainer);
|
||||
@ -68,8 +67,6 @@ class ResourcePreloaderEditor : public PanelContainer {
|
||||
void _cell_button_pressed(Object *p_item, int p_column, int p_id, MouseButton p_button);
|
||||
void _item_edited();
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
Variant get_drag_data_fw(const Point2 &p_point, Control *p_from);
|
||||
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
|
||||
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
|
||||
@ -80,8 +77,6 @@ protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
void set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo);
|
||||
|
||||
void edit(ResourcePreloader *p_preloader);
|
||||
ResourcePreloaderEditor();
|
||||
};
|
||||
|
@ -113,6 +113,7 @@ void BoneTransformEditor::_value_changed(const String &p_property, Variant p_val
|
||||
return;
|
||||
}
|
||||
if (skeleton) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Bone Transform"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_undo_property(skeleton, p_property, skeleton->get(p_property));
|
||||
undo_redo->add_do_property(skeleton, p_property, p_value);
|
||||
@ -122,7 +123,6 @@ void BoneTransformEditor::_value_changed(const String &p_property, Variant p_val
|
||||
|
||||
BoneTransformEditor::BoneTransformEditor(Skeleton3D *p_skeleton) :
|
||||
skeleton(p_skeleton) {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
}
|
||||
|
||||
void BoneTransformEditor::set_keyable(const bool p_keyable) {
|
||||
|
@ -41,7 +41,6 @@
|
||||
#include "scene/resources/immediate_mesh.h"
|
||||
|
||||
class EditorInspectorPluginSkeleton;
|
||||
class EditorUndoRedoManager;
|
||||
class Joint;
|
||||
class PhysicalBone3D;
|
||||
class Skeleton3DEditorPlugin;
|
||||
@ -65,8 +64,6 @@ class BoneTransformEditor : public VBoxContainer {
|
||||
Skeleton3D *skeleton = nullptr;
|
||||
// String property;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
bool toggle_enabled = false;
|
||||
bool updating = false;
|
||||
|
||||
|
@ -249,6 +249,7 @@ void SpriteFramesEditor::_sheet_add_frames() {
|
||||
const Size2i offset = _get_offset();
|
||||
const Size2i separation = _get_separation();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Frame"));
|
||||
|
||||
int fc = frames->get_frame_count(edited_anim);
|
||||
@ -467,6 +468,7 @@ void SpriteFramesEditor::_file_load_request(const Vector<String> &p_path, int p_
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Frame"));
|
||||
int fc = frames->get_frame_count(edited_anim);
|
||||
|
||||
@ -527,6 +529,7 @@ void SpriteFramesEditor::_paste_pressed() {
|
||||
return; ///beh should show an error i guess
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Paste Frame"));
|
||||
undo_redo->add_do_method(frames, "add_frame", edited_anim, r);
|
||||
undo_redo->add_undo_method(frames, "remove_frame", edited_anim, frames->get_frame_count(edited_anim));
|
||||
@ -564,6 +567,7 @@ void SpriteFramesEditor::_empty_pressed() {
|
||||
|
||||
Ref<Texture2D> r;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Empty"));
|
||||
undo_redo->add_do_method(frames, "add_frame", edited_anim, r, from);
|
||||
undo_redo->add_undo_method(frames, "remove_frame", edited_anim, from);
|
||||
@ -587,6 +591,7 @@ void SpriteFramesEditor::_empty2_pressed() {
|
||||
|
||||
Ref<Texture2D> r;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Empty"));
|
||||
undo_redo->add_do_method(frames, "add_frame", edited_anim, r, from + 1);
|
||||
undo_redo->add_undo_method(frames, "remove_frame", edited_anim, from + 1);
|
||||
@ -610,6 +615,7 @@ void SpriteFramesEditor::_up_pressed() {
|
||||
sel = to_move;
|
||||
sel -= 1;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete Resource"));
|
||||
undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move, frames->get_frame(edited_anim, to_move - 1));
|
||||
undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move - 1, frames->get_frame(edited_anim, to_move));
|
||||
@ -635,6 +641,7 @@ void SpriteFramesEditor::_down_pressed() {
|
||||
sel = to_move;
|
||||
sel += 1;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete Resource"));
|
||||
undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move, frames->get_frame(edited_anim, to_move + 1));
|
||||
undo_redo->add_do_method(frames, "set_frame", edited_anim, to_move + 1, frames->get_frame(edited_anim, to_move));
|
||||
@ -657,6 +664,7 @@ void SpriteFramesEditor::_delete_pressed() {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete Resource"));
|
||||
undo_redo->add_do_method(frames, "remove_frame", edited_anim, to_delete);
|
||||
undo_redo->add_undo_method(frames, "add_frame", edited_anim, frames->get_frame(edited_anim, to_delete), to_delete);
|
||||
@ -743,6 +751,7 @@ void SpriteFramesEditor::_animation_name_edited() {
|
||||
List<Node *> nodes;
|
||||
_find_anim_sprites(EditorNode::get_singleton()->get_edited_scene(), &nodes, Ref<SpriteFrames>(frames));
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Rename Animation"));
|
||||
undo_redo->add_do_method(frames, "rename_animation", edited_anim, name);
|
||||
undo_redo->add_undo_method(frames, "rename_animation", name, edited_anim);
|
||||
@ -772,6 +781,7 @@ void SpriteFramesEditor::_animation_add() {
|
||||
List<Node *> nodes;
|
||||
_find_anim_sprites(EditorNode::get_singleton()->get_edited_scene(), &nodes, Ref<SpriteFrames>(frames));
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Animation"));
|
||||
undo_redo->add_do_method(frames, "add_animation", name);
|
||||
undo_redo->add_undo_method(frames, "remove_animation", name);
|
||||
@ -804,6 +814,7 @@ void SpriteFramesEditor::_animation_remove() {
|
||||
}
|
||||
|
||||
void SpriteFramesEditor::_animation_remove_confirmed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove Animation"));
|
||||
undo_redo->add_do_method(frames, "remove_animation", edited_anim);
|
||||
undo_redo->add_undo_method(frames, "add_animation", edited_anim);
|
||||
@ -831,6 +842,7 @@ void SpriteFramesEditor::_animation_loop_changed() {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation Loop"));
|
||||
undo_redo->add_do_method(frames, "set_animation_loop", edited_anim, anim_loop->is_pressed());
|
||||
undo_redo->add_undo_method(frames, "set_animation_loop", edited_anim, frames->get_animation_loop(edited_anim));
|
||||
@ -844,6 +856,7 @@ void SpriteFramesEditor::_animation_fps_changed(double p_value) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Animation FPS"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_method(frames, "set_animation_speed", edited_anim, p_value);
|
||||
undo_redo->add_undo_method(frames, "set_animation_speed", edited_anim, frames->get_animation_speed(edited_anim));
|
||||
@ -1035,10 +1048,6 @@ void SpriteFramesEditor::edit(SpriteFrames *p_frames) {
|
||||
delete_frame->set_disabled(read_only);
|
||||
}
|
||||
|
||||
void SpriteFramesEditor::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
Variant SpriteFramesEditor::get_drag_data_fw(const Point2 &p_point, Control *p_from) {
|
||||
if (read_only) {
|
||||
return false;
|
||||
@ -1136,6 +1145,7 @@ void SpriteFramesEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da
|
||||
reorder = true;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (reorder) { //drop is from reordering frames
|
||||
int from_frame = -1;
|
||||
if (d.has("frame")) {
|
||||
@ -1530,8 +1540,6 @@ SpriteFramesEditor::SpriteFramesEditor() {
|
||||
}
|
||||
|
||||
void SpriteFramesEditorPlugin::edit(Object *p_object) {
|
||||
frames_editor->set_undo_redo(get_undo_redo());
|
||||
|
||||
SpriteFrames *s;
|
||||
AnimatedSprite2D *animated_sprite = Object::cast_to<AnimatedSprite2D>(p_object);
|
||||
if (animated_sprite) {
|
||||
|
@ -45,7 +45,6 @@
|
||||
#include "scene/gui/tree.h"
|
||||
|
||||
class EditorFileDialog;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class SpriteFramesEditor : public HSplitContainer {
|
||||
GDCLASS(SpriteFramesEditor, HSplitContainer);
|
||||
@ -154,8 +153,6 @@ class SpriteFramesEditor : public HSplitContainer {
|
||||
bool updating;
|
||||
bool updating_split_settings = false; // Skip SpinBox/Range callback when setting value by code.
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
Variant get_drag_data_fw(const Point2 &p_point, Control *p_from);
|
||||
bool can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
|
||||
void drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
|
||||
@ -179,8 +176,6 @@ protected:
|
||||
static void _bind_methods();
|
||||
|
||||
public:
|
||||
void set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo);
|
||||
|
||||
void edit(SpriteFrames *p_frames);
|
||||
SpriteFramesEditor();
|
||||
};
|
||||
|
@ -298,6 +298,7 @@ void TextureRegionEditor::_region_input(const Ref<InputEvent> &p_input) {
|
||||
mtx.xform(rect.position + Vector2(0, rect.size.y / 2)) + Vector2(-handle_offset, 0)
|
||||
};
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
Ref<InputEventMouseButton> mb = p_input;
|
||||
if (mb.is_valid()) {
|
||||
if (mb->get_button_index() == MouseButton::LEFT) {
|
||||
@ -1065,7 +1066,6 @@ TextureRegionEditor::TextureRegionEditor() {
|
||||
node_ninepatch = nullptr;
|
||||
obj_styleBox = Ref<StyleBoxTexture>(nullptr);
|
||||
atlas_tex = Ref<AtlasTexture>(nullptr);
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
preview_tex = Ref<CanvasTexture>(memnew(CanvasTexture));
|
||||
|
||||
|
@ -41,7 +41,6 @@
|
||||
#include "scene/resources/texture.h"
|
||||
|
||||
class ViewPanner;
|
||||
class EditorUndoRedoManager;
|
||||
class OptionButton;
|
||||
|
||||
class TextureRegionEditor : public AcceptDialog {
|
||||
@ -71,8 +70,6 @@ class TextureRegionEditor : public AcceptDialog {
|
||||
VScrollBar *vscroll = nullptr;
|
||||
HScrollBar *hscroll = nullptr;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
Vector2 draw_ofs;
|
||||
float draw_zoom = 0.0;
|
||||
bool updating_scroll = false;
|
||||
|
@ -154,6 +154,7 @@ void AtlasMergingDialog::_merge_confirmed(String p_path) {
|
||||
Ref<Texture2D> new_texture_resource = ResourceLoader::load(p_path, "Texture2D");
|
||||
merged->set_texture(new_texture_resource);
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Merge TileSetAtlasSource"));
|
||||
int next_id = tile_set->get_next_source_id();
|
||||
undo_redo->add_do_method(*tile_set, "add_source", merged, next_id);
|
||||
@ -193,6 +194,7 @@ void AtlasMergingDialog::ok_pressed() {
|
||||
}
|
||||
|
||||
void AtlasMergingDialog::cancel_pressed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (int i = 0; i < commited_actions_count; i++) {
|
||||
undo_redo->undo();
|
||||
}
|
||||
@ -248,8 +250,6 @@ void AtlasMergingDialog::update_tile_set(Ref<TileSet> p_tile_set) {
|
||||
}
|
||||
|
||||
AtlasMergingDialog::AtlasMergingDialog() {
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
// Atlas merging window.
|
||||
set_title(TTR("Atlas Merging"));
|
||||
set_hide_on_ok(false);
|
||||
|
@ -38,7 +38,6 @@
|
||||
#include "scene/resources/tile_set.h"
|
||||
|
||||
class EditorFileDialog;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class AtlasMergingDialog : public ConfirmationDialog {
|
||||
GDCLASS(AtlasMergingDialog, ConfirmationDialog);
|
||||
@ -50,8 +49,6 @@ private:
|
||||
LocalVector<HashMap<Vector2i, Vector2i>> merged_mapping;
|
||||
Ref<TileSet> tile_set;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
// Settings.
|
||||
int next_line_after_column = 30;
|
||||
|
||||
|
@ -255,7 +255,7 @@ void GenericTilePolygonEditor::_zoom_changed() {
|
||||
void GenericTilePolygonEditor::_advanced_menu_item_pressed(int p_item_pressed) {
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
if (use_undo_redo) {
|
||||
undo_redo = editor_undo_redo;
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
} else {
|
||||
// This nice hack allows for discarding undo actions without making code too complex.
|
||||
undo_redo.instantiate();
|
||||
@ -420,7 +420,7 @@ void GenericTilePolygonEditor::_snap_to_half_pixel(Point2 &r_point) {
|
||||
void GenericTilePolygonEditor::_base_control_gui_input(Ref<InputEvent> p_event) {
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
if (use_undo_redo) {
|
||||
undo_redo = editor_undo_redo;
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
} else {
|
||||
// This nice hack allows for discarding undo actions without making code too complex.
|
||||
undo_redo.instantiate();
|
||||
@ -756,8 +756,6 @@ void GenericTilePolygonEditor::_bind_methods() {
|
||||
}
|
||||
|
||||
GenericTilePolygonEditor::GenericTilePolygonEditor() {
|
||||
editor_undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
toolbar = memnew(HBoxContainer);
|
||||
add_child(toolbar);
|
||||
|
||||
@ -876,6 +874,7 @@ Variant TileDataDefaultEditor::_get_value(TileSetAtlasSource *p_tile_set_atlas_s
|
||||
}
|
||||
|
||||
void TileDataDefaultEditor::_setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (const KeyValue<TileMapCell, Variant> &E : p_previous_values) {
|
||||
Vector2i coords = E.key.get_atlas_coords();
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/%s", coords.x, coords.y, E.key.alternative_tile, property), E.value);
|
||||
@ -944,6 +943,7 @@ void TileDataDefaultEditor::forward_painting_atlas_gui_input(TileAtlasView *p_ti
|
||||
}
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
Ref<InputEventMouseButton> mb = p_event;
|
||||
if (mb.is_valid()) {
|
||||
if (mb->get_button_index() == MouseButton::LEFT) {
|
||||
@ -1067,6 +1067,7 @@ void TileDataDefaultEditor::forward_painting_alternatives_gui_input(TileAtlasVie
|
||||
drag_last_pos = mb->get_position();
|
||||
}
|
||||
} else {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Painting Tiles Property"));
|
||||
_setup_undo_redo_action(p_tile_set_atlas_source, drag_modified, drag_painted_value);
|
||||
undo_redo->commit_action(false);
|
||||
@ -1188,8 +1189,6 @@ Variant::Type TileDataDefaultEditor::get_property_type() {
|
||||
}
|
||||
|
||||
TileDataDefaultEditor::TileDataDefaultEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
label = memnew(Label);
|
||||
label->set_text(TTR("Painting:"));
|
||||
label->set_theme_type_variation("HeaderSmall");
|
||||
@ -1320,6 +1319,7 @@ Variant TileDataOcclusionShapeEditor::_get_value(TileSetAtlasSource *p_tile_set_
|
||||
}
|
||||
|
||||
void TileDataOcclusionShapeEditor::_setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (const KeyValue<TileMapCell, Variant> &E : p_previous_values) {
|
||||
Vector2i coords = E.key.get_atlas_coords();
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/occlusion_layer_%d/polygon", coords.x, coords.y, E.key.alternative_tile, occlusion_layer), E.value);
|
||||
@ -1340,8 +1340,6 @@ void TileDataOcclusionShapeEditor::_notification(int p_what) {
|
||||
}
|
||||
|
||||
TileDataOcclusionShapeEditor::TileDataOcclusionShapeEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
polygon_editor = memnew(GenericTilePolygonEditor);
|
||||
add_child(polygon_editor);
|
||||
}
|
||||
@ -1501,6 +1499,7 @@ Variant TileDataCollisionEditor::_get_value(TileSetAtlasSource *p_tile_set_atlas
|
||||
|
||||
void TileDataCollisionEditor::_setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) {
|
||||
Array new_array = p_new_value;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (KeyValue<TileMapCell, Variant> &E : p_previous_values) {
|
||||
Array old_array = E.value;
|
||||
|
||||
@ -1537,8 +1536,6 @@ void TileDataCollisionEditor::_notification(int p_what) {
|
||||
}
|
||||
|
||||
TileDataCollisionEditor::TileDataCollisionEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
polygon_editor = memnew(GenericTilePolygonEditor);
|
||||
polygon_editor->set_multiple_polygon_mode(true);
|
||||
polygon_editor->connect("polygons_changed", callable_mp(this, &TileDataCollisionEditor::_polygons_changed));
|
||||
@ -2185,6 +2182,7 @@ void TileDataTerrainsEditor::forward_painting_atlas_gui_input(TileAtlasView *p_t
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (drag_type == DRAG_TYPE_PAINT_TERRAIN_SET_RECT) {
|
||||
Rect2i rect;
|
||||
rect.set_position(p_tile_atlas_view->get_atlas_tile_coords_at_pos(drag_start_pos));
|
||||
@ -2557,6 +2555,7 @@ void TileDataTerrainsEditor::forward_painting_alternatives_gui_input(TileAtlasVi
|
||||
}
|
||||
}
|
||||
} else {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (drag_type == DRAG_TYPE_PAINT_TERRAIN_SET) {
|
||||
undo_redo->create_action(TTR("Painting Tiles Property"));
|
||||
for (KeyValue<TileMapCell, Variant> &E : drag_modified) {
|
||||
@ -2622,8 +2621,6 @@ void TileDataTerrainsEditor::_notification(int p_what) {
|
||||
}
|
||||
|
||||
TileDataTerrainsEditor::TileDataTerrainsEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
label = memnew(Label);
|
||||
label->set_text(TTR("Painting:"));
|
||||
label->set_theme_type_variation("HeaderSmall");
|
||||
@ -2707,6 +2704,7 @@ Variant TileDataNavigationEditor::_get_value(TileSetAtlasSource *p_tile_set_atla
|
||||
}
|
||||
|
||||
void TileDataNavigationEditor::_setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (const KeyValue<TileMapCell, Variant> &E : p_previous_values) {
|
||||
Vector2i coords = E.key.get_atlas_coords();
|
||||
undo_redo->add_undo_property(p_tile_set_atlas_source, vformat("%d:%d/%d/navigation_layer_%d/polygon", coords.x, coords.y, E.key.alternative_tile, navigation_layer), E.value);
|
||||
@ -2729,8 +2727,6 @@ void TileDataNavigationEditor::_notification(int p_what) {
|
||||
}
|
||||
|
||||
TileDataNavigationEditor::TileDataNavigationEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
polygon_editor = memnew(GenericTilePolygonEditor);
|
||||
polygon_editor->set_multiple_polygon_mode(true);
|
||||
add_child(polygon_editor);
|
||||
|
@ -39,8 +39,6 @@
|
||||
#include "scene/gui/control.h"
|
||||
#include "scene/gui/label.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class TileDataEditor : public VBoxContainer {
|
||||
GDCLASS(TileDataEditor, VBoxContainer);
|
||||
|
||||
@ -95,7 +93,6 @@ private:
|
||||
bool multiple_polygon_mode = false;
|
||||
|
||||
bool use_undo_redo = true;
|
||||
Ref<EditorUndoRedoManager> editor_undo_redo;
|
||||
|
||||
// UI
|
||||
int hovered_polygon_index = -1;
|
||||
@ -216,8 +213,6 @@ private:
|
||||
protected:
|
||||
DummyObject *dummy_object = memnew(DummyObject);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
StringName type;
|
||||
String property;
|
||||
Variant::Type property_type;
|
||||
@ -283,8 +278,6 @@ private:
|
||||
virtual void _setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) override;
|
||||
|
||||
protected:
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
virtual void _tile_set_changed() override;
|
||||
|
||||
void _notification(int p_what);
|
||||
@ -318,8 +311,6 @@ class TileDataCollisionEditor : public TileDataDefaultEditor {
|
||||
virtual void _setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) override;
|
||||
|
||||
protected:
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
virtual void _tile_set_changed() override;
|
||||
|
||||
void _notification(int p_what);
|
||||
@ -370,8 +361,6 @@ protected:
|
||||
|
||||
void _notification(int p_what);
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
public:
|
||||
virtual Control *get_toolbar() override { return toolbar; };
|
||||
virtual void forward_draw_over_atlas(TileAtlasView *p_tile_atlas_view, TileSetAtlasSource *p_tile_atlas_source, CanvasItem *p_canvas_item, Transform2D p_transform) override;
|
||||
@ -403,8 +392,6 @@ private:
|
||||
virtual void _setup_undo_redo_action(TileSetAtlasSource *p_tile_set_atlas_source, HashMap<TileMapCell, Variant, TileMapCell> p_previous_values, Variant p_new_value) override;
|
||||
|
||||
protected:
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
virtual void _tile_set_changed() override;
|
||||
|
||||
void _notification(int p_what);
|
||||
|
@ -272,6 +272,7 @@ void TileMapEditorTilesPlugin::_patterns_item_list_gui_input(const Ref<InputEven
|
||||
if (ED_IS_SHORTCUT("tiles_editor/paste", p_event) && p_event->is_pressed() && !p_event->is_echo()) {
|
||||
select_last_pattern = true;
|
||||
int new_pattern_index = tile_set->get_patterns_count();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add TileSet pattern"));
|
||||
undo_redo->add_do_method(*tile_set, "add_pattern", tile_map_clipboard, new_pattern_index);
|
||||
undo_redo->add_undo_method(*tile_set, "remove_pattern", new_pattern_index);
|
||||
@ -281,6 +282,7 @@ void TileMapEditorTilesPlugin::_patterns_item_list_gui_input(const Ref<InputEven
|
||||
|
||||
if (ED_IS_SHORTCUT("tiles_editor/delete", p_event) && p_event->is_pressed() && !p_event->is_echo()) {
|
||||
Vector<int> selected = patterns_item_list->get_selected_items();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove TileSet patterns"));
|
||||
for (int i = 0; i < selected.size(); i++) {
|
||||
int pattern_index = selected[i];
|
||||
@ -511,6 +513,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
||||
if (ED_IS_SHORTCUT("tiles_editor/cut", p_event)) {
|
||||
// Delete selected tiles.
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete tiles"));
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
@ -542,6 +545,7 @@ bool TileMapEditorTilesPlugin::forward_canvas_gui_input(const Ref<InputEvent> &p
|
||||
if (ED_IS_SHORTCUT("tiles_editor/delete", p_event)) {
|
||||
// Delete selected tiles.
|
||||
if (!tile_map_selection.is_empty()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete tiles"));
|
||||
for (const Vector2i &E : tile_map_selection) {
|
||||
undo_redo->add_do_method(tile_map, "set_cell", tile_map_layer, E, TileSet::INVALID_SOURCE, TileSetSource::INVALID_ATLAS_COORDS, TileSetSource::INVALID_TILE_ALTERNATIVE);
|
||||
@ -1233,6 +1237,7 @@ void TileMapEditorTilesPlugin::_stop_dragging() {
|
||||
Transform2D xform = CanvasItemEditor::get_singleton()->get_canvas_transform() * tile_map->get_global_transform();
|
||||
Vector2 mpos = xform.affine_inverse().xform(CanvasItemEditor::get_singleton()->get_viewport_control()->get_local_mouse_position());
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
switch (drag_type) {
|
||||
case DRAG_TYPE_SELECT: {
|
||||
undo_redo->create_action(TTR("Change selection"));
|
||||
@ -2012,8 +2017,6 @@ void TileMapEditorTilesPlugin::_bind_methods() {
|
||||
}
|
||||
|
||||
TileMapEditorTilesPlugin::TileMapEditorTilesPlugin() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
CanvasItemEditor::get_singleton()
|
||||
->get_viewport_control()
|
||||
->connect("mouse_exited", callable_mp(this, &TileMapEditorTilesPlugin::_mouse_exited_viewport));
|
||||
@ -2634,6 +2637,7 @@ void TileMapEditorTerrainsPlugin::_stop_dragging() {
|
||||
Transform2D xform = CanvasItemEditor::get_singleton()->get_canvas_transform() * tile_map->get_global_transform();
|
||||
Vector2 mpos = xform.affine_inverse().xform(CanvasItemEditor::get_singleton()->get_viewport_control()->get_local_mouse_position());
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
switch (drag_type) {
|
||||
case DRAG_TYPE_PICK: {
|
||||
Vector2i coords = tile_map->local_to_map(mpos);
|
||||
@ -3304,8 +3308,6 @@ void TileMapEditorTerrainsPlugin::edit(ObjectID p_tile_map_id, int p_tile_map_la
|
||||
}
|
||||
|
||||
TileMapEditorTerrainsPlugin::TileMapEditorTerrainsPlugin() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
main_vbox_container = memnew(VBoxContainer);
|
||||
main_vbox_container->connect("tree_entered", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_theme));
|
||||
main_vbox_container->connect("theme_changed", callable_mp(this, &TileMapEditorTerrainsPlugin::_update_theme));
|
||||
@ -3479,6 +3481,7 @@ void TileMapEditor::_advanced_menu_button_id_pressed(int p_id) {
|
||||
}
|
||||
|
||||
if (p_id == 0) { // Replace Tile Proxies
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Replace Tiles with Proxies"));
|
||||
for (int layer_index = 0; layer_index < tile_map->get_layers_count(); layer_index++) {
|
||||
TypedArray<Vector2i> used_cells = tile_map->get_used_cells(layer_index);
|
||||
@ -3952,8 +3955,6 @@ void TileMapEditor::edit(TileMap *p_tile_map) {
|
||||
}
|
||||
|
||||
TileMapEditor::TileMapEditor() {
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
set_process_internal(true);
|
||||
|
||||
// Shortcuts.
|
||||
|
@ -47,8 +47,6 @@
|
||||
#include "scene/gui/tab_bar.h"
|
||||
#include "scene/gui/tree.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class TileMapEditorPlugin : public Object {
|
||||
public:
|
||||
struct TabData {
|
||||
@ -70,7 +68,6 @@ class TileMapEditorTilesPlugin : public TileMapEditorPlugin {
|
||||
GDCLASS(TileMapEditorTilesPlugin, TileMapEditorPlugin);
|
||||
|
||||
private:
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
ObjectID tile_map_id;
|
||||
int tile_map_layer = -1;
|
||||
virtual void edit(ObjectID p_tile_map_id, int p_tile_map_layer) override;
|
||||
@ -223,7 +220,6 @@ class TileMapEditorTerrainsPlugin : public TileMapEditorPlugin {
|
||||
GDCLASS(TileMapEditorTerrainsPlugin, TileMapEditorPlugin);
|
||||
|
||||
private:
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
ObjectID tile_map_id;
|
||||
int tile_map_layer = -1;
|
||||
virtual void edit(ObjectID p_tile_map_id, int p_tile_map_layer) override;
|
||||
@ -317,7 +313,6 @@ class TileMapEditor : public VBoxContainer {
|
||||
GDCLASS(TileMapEditor, VBoxContainer);
|
||||
|
||||
private:
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
bool tileset_changed_needs_update = false;
|
||||
ObjectID tile_map_id;
|
||||
int tile_map_layer = -1;
|
||||
|
@ -53,6 +53,7 @@ void TileProxiesManagerDialog::_menu_id_pressed(int p_id) {
|
||||
}
|
||||
|
||||
void TileProxiesManagerDialog::_delete_selected_bindings() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove Tile Proxies"));
|
||||
|
||||
Vector<int> source_level_selected = source_level_list->get_selected_items();
|
||||
@ -152,6 +153,7 @@ void TileProxiesManagerDialog::_property_changed(const String &p_path, const Var
|
||||
}
|
||||
|
||||
void TileProxiesManagerDialog::_add_button_pressed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (from.source_id != TileSet::INVALID_SOURCE && to.source_id != TileSet::INVALID_SOURCE) {
|
||||
Vector2i from_coords = from.get_atlas_coords();
|
||||
Vector2i to_coords = to.get_atlas_coords();
|
||||
@ -192,6 +194,7 @@ void TileProxiesManagerDialog::_add_button_pressed() {
|
||||
}
|
||||
|
||||
void TileProxiesManagerDialog::_clear_invalid_button_pressed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete All Invalid Tile Proxies"));
|
||||
|
||||
undo_redo->add_do_method(*tile_set, "cleanup_invalid_tile_proxies");
|
||||
@ -219,6 +222,7 @@ void TileProxiesManagerDialog::_clear_invalid_button_pressed() {
|
||||
}
|
||||
|
||||
void TileProxiesManagerDialog::_clear_all_button_pressed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete All Tile Proxies"));
|
||||
|
||||
undo_redo->add_do_method(*tile_set, "clear_tile_proxies");
|
||||
@ -299,6 +303,7 @@ void TileProxiesManagerDialog::_unhandled_key_input(Ref<InputEvent> p_event) {
|
||||
}
|
||||
|
||||
void TileProxiesManagerDialog::cancel_pressed() {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (int i = 0; i < commited_actions_count; i++) {
|
||||
undo_redo->undo();
|
||||
}
|
||||
@ -318,8 +323,6 @@ void TileProxiesManagerDialog::update_tile_set(Ref<TileSet> p_tile_set) {
|
||||
}
|
||||
|
||||
TileProxiesManagerDialog::TileProxiesManagerDialog() {
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
// Tile proxy management window.
|
||||
set_title(TTR("Tile Proxies Management"));
|
||||
set_process_unhandled_key_input(true);
|
||||
|
@ -43,8 +43,6 @@ private:
|
||||
int commited_actions_count = 0;
|
||||
Ref<TileSet> tile_set;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
TileMapCell from;
|
||||
TileMapCell to;
|
||||
|
||||
|
@ -66,6 +66,7 @@ void TileSetEditor::_drop_data_fw(const Point2 &p_point, const Variant &p_data,
|
||||
// Actually create the new source.
|
||||
Ref<TileSetAtlasSource> atlas_source = memnew(TileSetAtlasSource);
|
||||
atlas_source->set_texture(resource);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add a new atlas source"));
|
||||
undo_redo->add_do_method(*tile_set, "add_source", atlas_source, source_id);
|
||||
undo_redo->add_do_method(*atlas_source, "set_texture_region_size", tile_set->get_tile_size());
|
||||
@ -256,6 +257,7 @@ void TileSetEditor::_source_delete_pressed() {
|
||||
Ref<TileSetSource> source = tile_set->get_source(to_delete);
|
||||
|
||||
// Remove the source.
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove source"));
|
||||
undo_redo->add_do_method(*tile_set, "remove_source", to_delete);
|
||||
undo_redo->add_undo_method(*tile_set, "add_source", source, to_delete);
|
||||
@ -274,6 +276,7 @@ void TileSetEditor::_source_add_id_pressed(int p_id_pressed) {
|
||||
Ref<TileSetAtlasSource> atlas_source = memnew(TileSetAtlasSource);
|
||||
|
||||
// Add a new source.
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add atlas source"));
|
||||
undo_redo->add_do_method(*tile_set, "add_source", atlas_source, source_id);
|
||||
undo_redo->add_do_method(*atlas_source, "set_texture_region_size", tile_set->get_tile_size());
|
||||
@ -288,6 +291,7 @@ void TileSetEditor::_source_add_id_pressed(int p_id_pressed) {
|
||||
Ref<TileSetScenesCollectionSource> scene_collection_source = memnew(TileSetScenesCollectionSource);
|
||||
|
||||
// Add a new source.
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add atlas source"));
|
||||
undo_redo->add_do_method(*tile_set, "add_source", scene_collection_source, source_id);
|
||||
undo_redo->add_undo_method(*tile_set, "remove_source", source_id);
|
||||
@ -361,6 +365,7 @@ void TileSetEditor::_patterns_item_list_gui_input(const Ref<InputEvent> &p_event
|
||||
|
||||
if (ED_IS_SHORTCUT("tiles_editor/delete", p_event) && p_event->is_pressed() && !p_event->is_echo()) {
|
||||
Vector<int> selected = patterns_item_list->get_selected_items();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove TileSet patterns"));
|
||||
for (int i = 0; i < selected.size(); i++) {
|
||||
int pattern_index = selected[i];
|
||||
@ -666,8 +671,6 @@ void TileSetEditor::edit(Ref<TileSet> p_tile_set) {
|
||||
TileSetEditor::TileSetEditor() {
|
||||
singleton = this;
|
||||
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
set_process_internal(true);
|
||||
|
||||
// TabBar.
|
||||
|
@ -39,8 +39,6 @@
|
||||
#include "tile_set_atlas_source_editor.h"
|
||||
#include "tile_set_scenes_collection_source_editor.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class TileSetEditor : public VBoxContainer {
|
||||
GDCLASS(TileSetEditor, VBoxContainer);
|
||||
|
||||
@ -60,8 +58,6 @@ private:
|
||||
TileSetAtlasSourceEditor *tile_set_atlas_source_editor = nullptr;
|
||||
TileSetScenesCollectionSourceEditor *tile_set_scenes_collection_source_editor = nullptr;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
|
||||
void _drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from);
|
||||
bool _can_drop_data_fw(const Point2 &p_point, const Variant &p_data, Control *p_from) const;
|
||||
|
||||
|
@ -1659,6 +1659,7 @@ void VisualShaderEditor::_update_parameters(bool p_update_refs) {
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_update_parameter_refs(HashSet<String> &p_deleted_names) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (int i = 0; i < VisualShader::TYPE_MAX; i++) {
|
||||
VisualShader::Type type = VisualShader::Type(i);
|
||||
|
||||
@ -1758,6 +1759,7 @@ void VisualShaderEditor::_add_input_port(int p_node, int p_port, int p_port_type
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Input Port"));
|
||||
undo_redo->add_do_method(node.ptr(), "add_input_port", p_port, p_port_type, p_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "remove_input_port", p_port);
|
||||
@ -1773,6 +1775,7 @@ void VisualShaderEditor::_add_output_port(int p_node, int p_port, int p_port_typ
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Output Port"));
|
||||
undo_redo->add_do_method(node.ptr(), "add_output_port", p_port, p_port_type, p_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "remove_output_port", p_port);
|
||||
@ -1788,6 +1791,7 @@ void VisualShaderEditor::_change_input_port_type(int p_type, int p_node, int p_p
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Input Port Type"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_input_port_type", p_port, p_type);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_input_port_type", p_port, node->get_input_port_type(p_port));
|
||||
@ -1803,6 +1807,7 @@ void VisualShaderEditor::_change_output_port_type(int p_type, int p_node, int p_
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Output Port Type"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_output_port_type", p_port, p_type);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_output_port_type", p_port, node->get_output_port_type(p_port));
|
||||
@ -1831,6 +1836,7 @@ void VisualShaderEditor::_change_input_port_name(const String &p_text, Object *p
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Input Port Name"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_input_port_name", p_port_id, validated_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_input_port_name", p_port_id, node->get_input_port_name(p_port_id));
|
||||
@ -1857,6 +1863,7 @@ void VisualShaderEditor::_change_output_port_name(const String &p_text, Object *
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Change Output Port Name"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_output_port_name", p_port_id, validated_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_output_port_name", p_port_id, prev_name);
|
||||
@ -1869,6 +1876,7 @@ void VisualShaderEditor::_expand_output_port(int p_node, int p_port, bool p_expa
|
||||
Ref<VisualShaderNode> node = visual_shader->get_node(type, p_node);
|
||||
ERR_FAIL_COND(!node.is_valid());
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (p_expand) {
|
||||
undo_redo->create_action(TTR("Expand Output Port"));
|
||||
} else {
|
||||
@ -1966,6 +1974,7 @@ void VisualShaderEditor::_remove_input_port(int p_node, int p_port) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove Input Port"));
|
||||
|
||||
List<VisualShader::Connection> conns;
|
||||
@ -2015,6 +2024,7 @@ void VisualShaderEditor::_remove_output_port(int p_node, int p_port) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Remove Output Port"));
|
||||
|
||||
List<VisualShader::Connection> conns;
|
||||
@ -2081,6 +2091,7 @@ void VisualShaderEditor::_expression_focus_out(Object *code_edit, int p_node) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set VisualShader Expression"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_expression", expression_box->get_text());
|
||||
undo_redo->add_undo_method(node.ptr(), "set_expression", node->get_expression());
|
||||
@ -2144,6 +2155,7 @@ void VisualShaderEditor::_node_resized(const Vector2 &p_new_size, int p_type, in
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Resize VisualShader Node"), UndoRedo::MERGE_ENDS);
|
||||
undo_redo->add_do_method(this, "_set_node_size", p_type, p_node, p_new_size);
|
||||
undo_redo->add_undo_method(this, "_set_node_size", p_type, p_node, node->get_size());
|
||||
@ -2160,6 +2172,7 @@ void VisualShaderEditor::_preview_select_port(int p_node, int p_port) {
|
||||
if (node->get_output_port_for_preview() == p_port) {
|
||||
p_port = -1; //toggle it
|
||||
}
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(p_port == -1 ? TTR("Hide Port Preview") : TTR("Show Port Preview"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_output_port_for_preview", p_port);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_output_port_for_preview", prev_port);
|
||||
@ -2205,6 +2218,7 @@ void VisualShaderEditor::_comment_title_popup_hide() {
|
||||
if (node->get_title() == comment_title_change_edit->get_text()) {
|
||||
return; // nothing changed - ignored
|
||||
}
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Comment Node Title"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_title", comment_title_change_edit->get_text());
|
||||
undo_redo->add_undo_method(node.ptr(), "set_title", node->get_title());
|
||||
@ -2247,6 +2261,7 @@ void VisualShaderEditor::_comment_desc_popup_hide() {
|
||||
if (node->get_description() == comment_desc_change_edit->get_text()) {
|
||||
return; // nothing changed - ignored
|
||||
}
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Comment Node Description"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_description", comment_desc_change_edit->get_text());
|
||||
undo_redo->add_undo_method(node.ptr(), "set_description", node->get_title());
|
||||
@ -2267,6 +2282,7 @@ void VisualShaderEditor::_parameter_line_edit_changed(const String &p_text, int
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Parameter Name"));
|
||||
undo_redo->add_do_method(node.ptr(), "set_parameter_name", validated_name);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_parameter_name", node->get_parameter_name());
|
||||
@ -2302,6 +2318,7 @@ void VisualShaderEditor::_port_edited(const StringName &p_property, const Varian
|
||||
Ref<VisualShaderNode> vsn = visual_shader->get_node(type, editing_node);
|
||||
ERR_FAIL_COND(!vsn.is_valid());
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Input Default Port"));
|
||||
|
||||
Ref<VisualShaderNodeCustom> custom = Object::cast_to<VisualShaderNodeCustom>(vsn.ptr());
|
||||
@ -2725,6 +2742,7 @@ void VisualShaderEditor::_add_node(int p_idx, const Vector<Variant> &p_ops, Stri
|
||||
|
||||
int id_to_use = visual_shader->get_valid_node_id(type);
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (p_resource_path.is_empty()) {
|
||||
undo_redo->create_action(TTR("Add Node to Visual Shader"));
|
||||
} else {
|
||||
@ -2894,6 +2912,7 @@ void VisualShaderEditor::_add_node(int p_idx, const Vector<Variant> &p_ops, Stri
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_add_varying(const String &p_name, VisualShader::VaryingMode p_mode, VisualShader::VaryingType p_type) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Add Varying to Visual Shader: %s"), p_name));
|
||||
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "add_varying", p_name, p_mode, p_type);
|
||||
@ -2928,6 +2947,7 @@ void VisualShaderEditor::_add_varying(const String &p_name, VisualShader::Varyin
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_remove_varying(const String &p_name) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Remove Varying from Visual Shader: %s"), p_name));
|
||||
|
||||
VisualShader::VaryingMode var_mode = visual_shader->get_varying_mode(p_name);
|
||||
@ -3015,6 +3035,7 @@ void VisualShaderEditor::_node_dragged(const Vector2 &p_from, const Vector2 &p_t
|
||||
void VisualShaderEditor::_nodes_dragged() {
|
||||
drag_dirty = false;
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Node(s) Moved"));
|
||||
|
||||
for (const DragOp &E : drag_buffer) {
|
||||
@ -3038,6 +3059,7 @@ void VisualShaderEditor::_connection_request(const String &p_from, int p_from_in
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Nodes Connected"));
|
||||
|
||||
List<VisualShader::Connection> conns;
|
||||
@ -3069,6 +3091,7 @@ void VisualShaderEditor::_disconnection_request(const String &p_from, int p_from
|
||||
int from = p_from.to_int();
|
||||
int to = p_to.to_int();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Nodes Disconnected"));
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "disconnect_nodes", type, from, p_from_index, to, p_to_index);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "connect_nodes", type, from, p_from_index, to, p_to_index);
|
||||
@ -3108,6 +3131,7 @@ void VisualShaderEditor::_delete_nodes(int p_type, const List<int> &p_nodes) {
|
||||
List<VisualShader::Connection> conns;
|
||||
visual_shader->get_node_connections(type, &conns);
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
for (const int &F : p_nodes) {
|
||||
for (const VisualShader::Connection &E : conns) {
|
||||
if (E.from_node == F || E.to_node == F) {
|
||||
@ -3180,6 +3204,7 @@ void VisualShaderEditor::_delete_nodes(int p_type, const List<int> &p_nodes) {
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_replace_node(VisualShader::Type p_type_id, int p_node_id, const StringName &p_from, const StringName &p_to) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->add_do_method(visual_shader.ptr(), "replace_node", p_type_id, p_node_id, p_to);
|
||||
undo_redo->add_undo_method(visual_shader.ptr(), "replace_node", p_type_id, p_node_id, p_from);
|
||||
}
|
||||
@ -3214,6 +3239,7 @@ void VisualShaderEditor::_update_parameter(VisualShader::Type p_type_id, int p_n
|
||||
void VisualShaderEditor::_convert_constants_to_parameters(bool p_vice_versa) {
|
||||
VisualShader::Type type_id = get_current_shader_type();
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (!p_vice_versa) {
|
||||
undo_redo->create_action(TTR("Convert Constant Node(s) To Parameter(s)"));
|
||||
} else {
|
||||
@ -3412,6 +3438,7 @@ void VisualShaderEditor::_delete_node_request(int p_type, int p_node) {
|
||||
List<int> to_erase;
|
||||
to_erase.push_back(p_node);
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete VisualShader Node"));
|
||||
_delete_nodes(p_type, to_erase);
|
||||
undo_redo->commit_action();
|
||||
@ -3440,6 +3467,7 @@ void VisualShaderEditor::_delete_nodes_request(const TypedArray<StringName> &p_n
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Delete VisualShader Node(s)"));
|
||||
_delete_nodes(get_current_shader_type(), to_erase);
|
||||
undo_redo->commit_action();
|
||||
@ -3852,6 +3880,7 @@ void VisualShaderEditor::_dup_copy_nodes(int p_type, List<CopyItem> &r_items, Li
|
||||
}
|
||||
|
||||
void VisualShaderEditor::_dup_paste_nodes(int p_type, List<CopyItem> &r_items, const List<VisualShader::Connection> &p_connections, const Vector2 &p_offset, bool p_duplicate) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (p_duplicate) {
|
||||
undo_redo->create_action(TTR("Duplicate VisualShader Node(s)"));
|
||||
} else {
|
||||
@ -3970,6 +3999,7 @@ void VisualShaderEditor::_copy_nodes(bool p_cut) {
|
||||
_dup_copy_nodes(get_current_shader_type(), copy_items_buffer, copy_connections_buffer);
|
||||
|
||||
if (p_cut) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Cut VisualShader Node(s)"));
|
||||
|
||||
List<int> ids;
|
||||
@ -4240,6 +4270,7 @@ void VisualShaderEditor::_float_constant_selected(int p_which) {
|
||||
return; // same
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Set Constant: %s"), float_constant_defs[p_which].name));
|
||||
undo_redo->add_do_method(node.ptr(), "set_constant", float_constant_defs[p_which].value);
|
||||
undo_redo->add_undo_method(node.ptr(), "set_constant", node->get_constant());
|
||||
@ -4500,6 +4531,7 @@ void VisualShaderEditor::drop_data_fw(const Point2 &p_point, const Variant &p_da
|
||||
saved_node_pos_dirty = true;
|
||||
_add_node(idx, add_options[idx].ops);
|
||||
} else if (d.has("files")) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Add Node(s) to Visual Shader"));
|
||||
|
||||
if (d["files"].get_type() == Variant::PACKED_STRING_ARRAY) {
|
||||
@ -5675,8 +5707,6 @@ VisualShaderEditor::VisualShaderEditor() {
|
||||
|
||||
_update_options_menu();
|
||||
|
||||
undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
Ref<VisualShaderNodePluginDefault> default_plugin;
|
||||
default_plugin.instantiate();
|
||||
default_plugin->set_editor(this);
|
||||
|
@ -41,7 +41,6 @@ class GraphEdit;
|
||||
class GraphNode;
|
||||
|
||||
class VisualShaderEditor;
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class VisualShaderNodePlugin : public RefCounted {
|
||||
GDCLASS(VisualShaderNodePlugin, RefCounted);
|
||||
@ -185,7 +184,6 @@ class VisualShaderEditor : public VBoxContainer {
|
||||
PanelContainer *error_panel = nullptr;
|
||||
Label *error_label = nullptr;
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
Point2 saved_node_pos;
|
||||
bool saved_node_pos_dirty = false;
|
||||
|
||||
|
@ -46,9 +46,8 @@
|
||||
#include "scene/gui/separator.h"
|
||||
#include "scene/gui/tab_container.h"
|
||||
|
||||
RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor, Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
RenameDialog::RenameDialog(SceneTreeEditor *p_scene_tree_editor) {
|
||||
scene_tree_editor = p_scene_tree_editor;
|
||||
undo_redo = p_undo_redo;
|
||||
preview_node = nullptr;
|
||||
|
||||
set_title(TTR("Batch Rename"));
|
||||
@ -582,7 +581,8 @@ void RenameDialog::rename() {
|
||||
// Forward recursive as opposed to the actual renaming.
|
||||
_iterate_scene(root_node, selected_node_list, &global_count);
|
||||
|
||||
if (undo_redo.is_valid() && !to_rename.is_empty()) {
|
||||
if (!to_rename.is_empty()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Batch Rename"));
|
||||
|
||||
// Make sure to iterate reversed so that child nodes will find parents.
|
||||
|
@ -42,8 +42,6 @@
|
||||
#include "scene/gui/spin_box.h"
|
||||
#include "scene/gui/tab_container.h"
|
||||
|
||||
class EditorUndoRedoManager;
|
||||
|
||||
class RenameDialog : public ConfirmationDialog {
|
||||
GDCLASS(RenameDialog, ConfirmationDialog);
|
||||
|
||||
@ -64,7 +62,6 @@ class RenameDialog : public ConfirmationDialog {
|
||||
static void _error_handler(void *p_self, const char *p_func, const char *p_file, int p_line, const char *p_error, const char *p_errorexp, bool p_editor_notify, ErrorHandlerType p_type);
|
||||
|
||||
SceneTreeEditor *scene_tree_editor = nullptr;
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
int global_count = 0;
|
||||
|
||||
LineEdit *lne_search = nullptr;
|
||||
@ -110,8 +107,7 @@ public:
|
||||
void reset();
|
||||
void rename();
|
||||
|
||||
RenameDialog(SceneTreeEditor *p_scene_tree_editor, Ref<EditorUndoRedoManager> p_undo_redo = Ref<EditorUndoRedoManager>());
|
||||
~RenameDialog() {}
|
||||
RenameDialog(SceneTreeEditor *p_scene_tree_editor);
|
||||
};
|
||||
|
||||
#endif // MODULE_REGEX_ENABLED
|
||||
|
@ -226,28 +226,29 @@ void SceneTreeDock::_perform_instantiate_scenes(const Vector<String> &p_files, N
|
||||
return;
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Instantiate Scene(s)"));
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Instantiate Scene(s)"));
|
||||
|
||||
for (int i = 0; i < instances.size(); i++) {
|
||||
Node *instantiated_scene = instances[i];
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(parent, "add_child", instantiated_scene, true);
|
||||
undo_redo->add_do_method(parent, "add_child", instantiated_scene, true);
|
||||
if (p_pos >= 0) {
|
||||
editor_data->get_undo_redo()->add_do_method(parent, "move_child", instantiated_scene, p_pos + i);
|
||||
undo_redo->add_do_method(parent, "move_child", instantiated_scene, p_pos + i);
|
||||
}
|
||||
editor_data->get_undo_redo()->add_do_method(instantiated_scene, "set_owner", edited_scene);
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "clear");
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "add_node", instantiated_scene);
|
||||
editor_data->get_undo_redo()->add_do_reference(instantiated_scene);
|
||||
editor_data->get_undo_redo()->add_undo_method(parent, "remove_child", instantiated_scene);
|
||||
undo_redo->add_do_method(instantiated_scene, "set_owner", edited_scene);
|
||||
undo_redo->add_do_method(editor_selection, "clear");
|
||||
undo_redo->add_do_method(editor_selection, "add_node", instantiated_scene);
|
||||
undo_redo->add_do_reference(instantiated_scene);
|
||||
undo_redo->add_undo_method(parent, "remove_child", instantiated_scene);
|
||||
|
||||
String new_name = parent->validate_child_name(instantiated_scene);
|
||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_instantiate_node", edited_scene->get_path_to(parent), p_files[i], new_name);
|
||||
editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)).path_join(new_name)));
|
||||
undo_redo->add_do_method(ed, "live_debug_instantiate_node", edited_scene->get_path_to(parent), p_files[i], new_name);
|
||||
undo_redo->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)).path_join(new_name)));
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
_push_item(instances[instances.size() - 1]);
|
||||
for (int i = 0; i < instances.size(); i++) {
|
||||
emit_signal(SNAME("node_created"), instances[i]);
|
||||
@ -534,23 +535,24 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
return;
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Detach Script"), UndoRedo::MERGE_DISABLE, EditorNode::get_singleton()->get_edited_scene());
|
||||
editor_data->get_undo_redo()->add_do_method(EditorNode::get_singleton(), "push_item", (Script *)nullptr);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Detach Script"), UndoRedo::MERGE_DISABLE, EditorNode::get_singleton()->get_edited_scene());
|
||||
undo_redo->add_do_method(EditorNode::get_singleton(), "push_item", (Script *)nullptr);
|
||||
|
||||
for (int i = 0; i < selection.size(); i++) {
|
||||
Node *n = Object::cast_to<Node>(selection[i]);
|
||||
Ref<Script> existing = n->get_script();
|
||||
Ref<Script> empty = EditorNode::get_singleton()->get_object_custom_type_base(n);
|
||||
if (existing != empty) {
|
||||
editor_data->get_undo_redo()->add_do_method(n, "set_script", empty);
|
||||
editor_data->get_undo_redo()->add_undo_method(n, "set_script", existing);
|
||||
undo_redo->add_do_method(n, "set_script", empty);
|
||||
undo_redo->add_undo_method(n, "set_script", existing);
|
||||
}
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo()->add_undo_method(this, "_update_script_button");
|
||||
undo_redo->add_do_method(this, "_update_script_button");
|
||||
undo_redo->add_undo_method(this, "_update_script_button");
|
||||
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
} break;
|
||||
case TOOL_MOVE_UP:
|
||||
case TOOL_MOVE_DOWN: {
|
||||
@ -604,11 +606,12 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
break; // one or more nodes can not be moved
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (selection.size() == 1) {
|
||||
editor_data->get_undo_redo()->create_action(TTR("Move Node In Parent"));
|
||||
undo_redo->create_action(TTR("Move Node In Parent"));
|
||||
}
|
||||
if (selection.size() > 1) {
|
||||
editor_data->get_undo_redo()->create_action(TTR("Move Nodes In Parent"));
|
||||
undo_redo->create_action(TTR("Move Nodes In Parent"));
|
||||
}
|
||||
|
||||
for (int i = 0; i < selection.size(); i++) {
|
||||
@ -621,11 +624,11 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
int bottom_node_pos = bottom_node->get_index();
|
||||
int top_node_pos_next = top_node->get_index() + (MOVING_DOWN ? 1 : -1);
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(top_node->get_parent(), "move_child", top_node, top_node_pos_next);
|
||||
editor_data->get_undo_redo()->add_undo_method(bottom_node->get_parent(), "move_child", bottom_node, bottom_node_pos);
|
||||
undo_redo->add_do_method(top_node->get_parent(), "move_child", top_node, top_node_pos_next);
|
||||
undo_redo->add_undo_method(bottom_node->get_parent(), "move_child", bottom_node, bottom_node_pos);
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
|
||||
} break;
|
||||
case TOOL_DUPLICATE: {
|
||||
@ -653,8 +656,9 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
break;
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Duplicate Node(s)"), UndoRedo::MERGE_DISABLE, selection.front()->get());
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "clear");
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Duplicate Node(s)"), UndoRedo::MERGE_DISABLE, selection.front()->get());
|
||||
undo_redo->add_do_method(editor_selection, "clear");
|
||||
|
||||
Node *dupsingle = nullptr;
|
||||
|
||||
@ -679,28 +683,28 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
|
||||
dup->set_name(parent->validate_child_name(dup));
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(add_below_node, "add_sibling", dup, true);
|
||||
undo_redo->add_do_method(add_below_node, "add_sibling", dup, true);
|
||||
|
||||
for (Node *F : owned) {
|
||||
if (!duplimap.has(F)) {
|
||||
continue;
|
||||
}
|
||||
Node *d = duplimap[F];
|
||||
editor_data->get_undo_redo()->add_do_method(d, "set_owner", node->get_owner());
|
||||
undo_redo->add_do_method(d, "set_owner", node->get_owner());
|
||||
}
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "add_node", dup);
|
||||
editor_data->get_undo_redo()->add_undo_method(parent, "remove_child", dup);
|
||||
editor_data->get_undo_redo()->add_do_reference(dup);
|
||||
undo_redo->add_do_method(editor_selection, "add_node", dup);
|
||||
undo_redo->add_undo_method(parent, "remove_child", dup);
|
||||
undo_redo->add_do_reference(dup);
|
||||
|
||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_duplicate_node", edited_scene->get_path_to(node), dup->get_name());
|
||||
editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)).path_join(dup->get_name())));
|
||||
undo_redo->add_do_method(ed, "live_debug_duplicate_node", edited_scene->get_path_to(node), dup->get_name());
|
||||
undo_redo->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)).path_join(dup->get_name())));
|
||||
|
||||
add_below_node = dup;
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
|
||||
if (dupsingle) {
|
||||
_push_item(dupsingle);
|
||||
@ -769,29 +773,30 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
return;
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Make node as Root"));
|
||||
editor_data->get_undo_redo()->add_do_method(node->get_parent(), "remove_child", node);
|
||||
editor_data->get_undo_redo()->add_do_method(EditorNode::get_singleton(), "set_edited_scene", node);
|
||||
editor_data->get_undo_redo()->add_do_method(node, "add_child", root, true);
|
||||
editor_data->get_undo_redo()->add_do_method(node, "set_scene_file_path", root->get_scene_file_path());
|
||||
editor_data->get_undo_redo()->add_do_method(root, "set_scene_file_path", String());
|
||||
editor_data->get_undo_redo()->add_do_method(node, "set_owner", (Object *)nullptr);
|
||||
editor_data->get_undo_redo()->add_do_method(root, "set_owner", node);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Make node as Root"));
|
||||
undo_redo->add_do_method(node->get_parent(), "remove_child", node);
|
||||
undo_redo->add_do_method(EditorNode::get_singleton(), "set_edited_scene", node);
|
||||
undo_redo->add_do_method(node, "add_child", root, true);
|
||||
undo_redo->add_do_method(node, "set_scene_file_path", root->get_scene_file_path());
|
||||
undo_redo->add_do_method(root, "set_scene_file_path", String());
|
||||
undo_redo->add_do_method(node, "set_owner", (Object *)nullptr);
|
||||
undo_redo->add_do_method(root, "set_owner", node);
|
||||
_node_replace_owner(root, root, node, MODE_DO);
|
||||
|
||||
editor_data->get_undo_redo()->add_undo_method(root, "set_scene_file_path", root->get_scene_file_path());
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_scene_file_path", String());
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "remove_child", root);
|
||||
editor_data->get_undo_redo()->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", root);
|
||||
editor_data->get_undo_redo()->add_undo_method(node->get_parent(), "add_child", node, true);
|
||||
editor_data->get_undo_redo()->add_undo_method(node->get_parent(), "move_child", node, node->get_index());
|
||||
editor_data->get_undo_redo()->add_undo_method(root, "set_owner", (Object *)nullptr);
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_owner", root);
|
||||
undo_redo->add_undo_method(root, "set_scene_file_path", root->get_scene_file_path());
|
||||
undo_redo->add_undo_method(node, "set_scene_file_path", String());
|
||||
undo_redo->add_undo_method(node, "remove_child", root);
|
||||
undo_redo->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", root);
|
||||
undo_redo->add_undo_method(node->get_parent(), "add_child", node, true);
|
||||
undo_redo->add_undo_method(node->get_parent(), "move_child", node, node->get_index());
|
||||
undo_redo->add_undo_method(root, "set_owner", (Object *)nullptr);
|
||||
undo_redo->add_undo_method(node, "set_owner", root);
|
||||
_node_replace_owner(root, root, root, MODE_UNDO);
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(scene_tree, "update_tree");
|
||||
editor_data->get_undo_redo()->add_undo_method(scene_tree, "update_tree");
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->add_do_method(scene_tree, "update_tree");
|
||||
undo_redo->add_undo_method(scene_tree, "update_tree");
|
||||
undo_redo->commit_action();
|
||||
} break;
|
||||
case TOOL_MULTI_EDIT: {
|
||||
if (!profile_allow_editing) {
|
||||
@ -1013,7 +1018,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
Node *node = e->get();
|
||||
if (node) {
|
||||
Node *root = EditorNode::get_singleton()->get_edited_scene();
|
||||
Ref<EditorUndoRedoManager> undo_redo = editor_data->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (!root) {
|
||||
break;
|
||||
}
|
||||
@ -1089,7 +1094,7 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
bool enabling = !first_selected->get()->is_unique_name_in_owner();
|
||||
|
||||
List<Node *> full_selection = editor_selection->get_full_selected_node_list();
|
||||
Ref<EditorUndoRedoManager> undo_redo = editor_data->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
|
||||
if (enabling) {
|
||||
Vector<Node *> new_unique_nodes;
|
||||
@ -1212,19 +1217,21 @@ void SceneTreeDock::_property_selected(int p_idx) {
|
||||
}
|
||||
|
||||
void SceneTreeDock::_perform_property_drop(Node *p_node, String p_property, Ref<Resource> p_res) {
|
||||
editor_data->get_undo_redo()->create_action(vformat(TTR("Set %s"), p_property));
|
||||
editor_data->get_undo_redo()->add_do_property(p_node, p_property, p_res);
|
||||
editor_data->get_undo_redo()->add_undo_property(p_node, p_property, p_node->get(p_property));
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(vformat(TTR("Set %s"), p_property));
|
||||
undo_redo->add_do_property(p_node, p_property, p_res);
|
||||
undo_redo->add_undo_property(p_node, p_property, p_node->get(p_property));
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void SceneTreeDock::add_root_node(Node *p_node) {
|
||||
editor_data->get_undo_redo()->create_action_for_history(TTR("New Scene Root"), editor_data->get_current_edited_scene_history_id());
|
||||
editor_data->get_undo_redo()->add_do_method(EditorNode::get_singleton(), "set_edited_scene", p_node);
|
||||
editor_data->get_undo_redo()->add_do_method(scene_tree, "update_tree");
|
||||
editor_data->get_undo_redo()->add_do_reference(p_node);
|
||||
editor_data->get_undo_redo()->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action_for_history(TTR("New Scene Root"), editor_data->get_current_edited_scene_history_id());
|
||||
undo_redo->add_do_method(EditorNode::get_singleton(), "set_edited_scene", p_node);
|
||||
undo_redo->add_do_method(scene_tree, "update_tree");
|
||||
undo_redo->add_do_reference(p_node);
|
||||
undo_redo->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void SceneTreeDock::_notification(int p_what) {
|
||||
@ -1369,7 +1376,7 @@ void SceneTreeDock::_notification(int p_what) {
|
||||
|
||||
void SceneTreeDock::_node_replace_owner(Node *p_base, Node *p_node, Node *p_root, ReplaceOwnerMode p_mode) {
|
||||
if (p_node->get_owner() == p_base && p_node != p_root) {
|
||||
Ref<EditorUndoRedoManager> undo_redo = editor_data->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
switch (p_mode) {
|
||||
case MODE_BIDI: {
|
||||
bool disable_unique = p_node->is_unique_name_in_owner() && p_root->get_node_or_null(UNIQUE_NODE_PREFIX + String(p_node->get_name())) != nullptr;
|
||||
@ -1603,8 +1610,9 @@ void SceneTreeDock::perform_node_renames(Node *p_base, HashMap<Node *, NodePath>
|
||||
Variant old_variant = p_base->get(propertyname);
|
||||
Variant updated_variant = old_variant;
|
||||
if (_check_node_path_recursive(p_base, updated_variant, p_renames)) {
|
||||
editor_data->get_undo_redo()->add_do_property(p_base, propertyname, updated_variant);
|
||||
editor_data->get_undo_redo()->add_undo_property(p_base, propertyname, old_variant);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->add_do_property(p_base, propertyname, updated_variant);
|
||||
undo_redo->add_undo_property(p_base, propertyname, old_variant);
|
||||
p_base->set(propertyname, updated_variant);
|
||||
}
|
||||
}
|
||||
@ -1649,6 +1657,7 @@ void SceneTreeDock::perform_node_renames(Node *p_base, HashMap<Node *, NodePath>
|
||||
}
|
||||
|
||||
HashMap<Node *, NodePath>::Iterator found_path = p_renames->find(n);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (found_path) {
|
||||
if (found_path->value == NodePath()) {
|
||||
//will be erased
|
||||
@ -1662,12 +1671,12 @@ void SceneTreeDock::perform_node_renames(Node *p_base, HashMap<Node *, NodePath>
|
||||
ERR_FAIL_COND(!EI); //another bug
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(anim.ptr(), "remove_track", idx);
|
||||
editor_data->get_undo_redo()->add_undo_method(anim.ptr(), "add_track", anim->track_get_type(i), idx);
|
||||
editor_data->get_undo_redo()->add_undo_method(anim.ptr(), "track_set_path", idx, track_np);
|
||||
editor_data->get_undo_redo()->add_undo_method(anim.ptr(), "track_set_interpolation_type", idx, anim->track_get_interpolation_type(i));
|
||||
undo_redo->add_do_method(anim.ptr(), "remove_track", idx);
|
||||
undo_redo->add_undo_method(anim.ptr(), "add_track", anim->track_get_type(i), idx);
|
||||
undo_redo->add_undo_method(anim.ptr(), "track_set_path", idx, track_np);
|
||||
undo_redo->add_undo_method(anim.ptr(), "track_set_interpolation_type", idx, anim->track_get_interpolation_type(i));
|
||||
for (int j = 0; j < anim->track_get_key_count(i); j++) {
|
||||
editor_data->get_undo_redo()->add_undo_method(anim.ptr(), "track_insert_key", idx, anim->track_get_key_time(i, j), anim->track_get_key_value(i, j), anim->track_get_key_transition(i, j));
|
||||
undo_redo->add_undo_method(anim.ptr(), "track_insert_key", idx, anim->track_get_key_time(i, j), anim->track_get_key_value(i, j), anim->track_get_key_transition(i, j));
|
||||
}
|
||||
|
||||
ran.erase(i); //byebye channel
|
||||
@ -1680,8 +1689,8 @@ void SceneTreeDock::perform_node_renames(Node *p_base, HashMap<Node *, NodePath>
|
||||
if (new_path == track_np) {
|
||||
continue; //bleh
|
||||
}
|
||||
editor_data->get_undo_redo()->add_do_method(anim.ptr(), "track_set_path", i, new_path);
|
||||
editor_data->get_undo_redo()->add_undo_method(anim.ptr(), "track_set_path", i, track_np);
|
||||
undo_redo->add_do_method(anim.ptr(), "track_set_path", i, new_path);
|
||||
undo_redo->add_undo_method(anim.ptr(), "track_set_path", i, track_np);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1815,7 +1824,8 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
|
||||
// Sort by tree order, so re-adding is easy.
|
||||
p_nodes.sort_custom<Node::Comparator>();
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Reparent Node"), UndoRedo::MERGE_DISABLE, p_nodes[0]);
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Reparent Node"), UndoRedo::MERGE_DISABLE, p_nodes[0]);
|
||||
|
||||
HashMap<Node *, NodePath> path_renames;
|
||||
Vector<StringName> former_names;
|
||||
@ -1842,12 +1852,12 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
|
||||
}
|
||||
|
||||
if (!same_parent) {
|
||||
editor_data->get_undo_redo()->add_do_method(node->get_parent(), "remove_child", node);
|
||||
editor_data->get_undo_redo()->add_do_method(new_parent, "add_child", node, true);
|
||||
undo_redo->add_do_method(node->get_parent(), "remove_child", node);
|
||||
undo_redo->add_do_method(new_parent, "add_child", node, true);
|
||||
}
|
||||
|
||||
if (p_position_in_parent >= 0 || same_parent) {
|
||||
editor_data->get_undo_redo()->add_do_method(new_parent, "move_child", node, p_position_in_parent + inc);
|
||||
undo_redo->add_do_method(new_parent, "move_child", node, p_position_in_parent + inc);
|
||||
}
|
||||
|
||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||
@ -1877,29 +1887,29 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
|
||||
}
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_reparent_node", edited_scene->get_path_to(node), edited_scene->get_path_to(new_parent), new_name, p_position_in_parent + inc);
|
||||
editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_reparent_node", NodePath(String(edited_scene->get_path_to(new_parent)).path_join(new_name)), edited_scene->get_path_to(node->get_parent()), node->get_name(), node->get_index());
|
||||
undo_redo->add_do_method(ed, "live_debug_reparent_node", edited_scene->get_path_to(node), edited_scene->get_path_to(new_parent), new_name, p_position_in_parent + inc);
|
||||
undo_redo->add_undo_method(ed, "live_debug_reparent_node", NodePath(String(edited_scene->get_path_to(new_parent)).path_join(new_name)), edited_scene->get_path_to(node->get_parent()), node->get_name(), node->get_index());
|
||||
|
||||
if (p_keep_global_xform) {
|
||||
if (Object::cast_to<Node2D>(node)) {
|
||||
editor_data->get_undo_redo()->add_do_method(node, "set_global_transform", Object::cast_to<Node2D>(node)->get_global_transform());
|
||||
undo_redo->add_do_method(node, "set_global_transform", Object::cast_to<Node2D>(node)->get_global_transform());
|
||||
}
|
||||
if (Object::cast_to<Node3D>(node)) {
|
||||
editor_data->get_undo_redo()->add_do_method(node, "set_global_transform", Object::cast_to<Node3D>(node)->get_global_transform());
|
||||
undo_redo->add_do_method(node, "set_global_transform", Object::cast_to<Node3D>(node)->get_global_transform());
|
||||
}
|
||||
if (Object::cast_to<Control>(node)) {
|
||||
editor_data->get_undo_redo()->add_do_method(node, "set_global_position", Object::cast_to<Control>(node)->get_global_position());
|
||||
undo_redo->add_do_method(node, "set_global_position", Object::cast_to<Control>(node)->get_global_position());
|
||||
}
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(this, "_set_owners", edited_scene, owners);
|
||||
undo_redo->add_do_method(this, "_set_owners", edited_scene, owners);
|
||||
|
||||
if (AnimationPlayerEditor::get_singleton()->get_track_editor()->get_root() == node) {
|
||||
editor_data->get_undo_redo()->add_do_method(AnimationPlayerEditor::get_singleton()->get_track_editor(), "set_root", node);
|
||||
undo_redo->add_do_method(AnimationPlayerEditor::get_singleton()->get_track_editor(), "set_root", node);
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->add_undo_method(new_parent, "remove_child", node);
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_name", former_names[ni]);
|
||||
undo_redo->add_undo_method(new_parent, "remove_child", node);
|
||||
undo_redo->add_undo_method(node, "set_name", former_names[ni]);
|
||||
|
||||
inc++;
|
||||
}
|
||||
@ -1917,29 +1927,29 @@ void SceneTreeDock::_do_reparent(Node *p_new_parent, int p_position_in_parent, V
|
||||
|
||||
int child_pos = node->get_index();
|
||||
|
||||
editor_data->get_undo_redo()->add_undo_method(node->get_parent(), "add_child", node, true);
|
||||
editor_data->get_undo_redo()->add_undo_method(node->get_parent(), "move_child", node, child_pos);
|
||||
editor_data->get_undo_redo()->add_undo_method(this, "_set_owners", edited_scene, owners);
|
||||
undo_redo->add_undo_method(node->get_parent(), "add_child", node, true);
|
||||
undo_redo->add_undo_method(node->get_parent(), "move_child", node, child_pos);
|
||||
undo_redo->add_undo_method(this, "_set_owners", edited_scene, owners);
|
||||
if (AnimationPlayerEditor::get_singleton()->get_track_editor()->get_root() == node) {
|
||||
editor_data->get_undo_redo()->add_undo_method(AnimationPlayerEditor::get_singleton()->get_track_editor(), "set_root", node);
|
||||
undo_redo->add_undo_method(AnimationPlayerEditor::get_singleton()->get_track_editor(), "set_root", node);
|
||||
}
|
||||
|
||||
if (p_keep_global_xform) {
|
||||
if (Object::cast_to<Node2D>(node)) {
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_transform", Object::cast_to<Node2D>(node)->get_transform());
|
||||
undo_redo->add_undo_method(node, "set_transform", Object::cast_to<Node2D>(node)->get_transform());
|
||||
}
|
||||
if (Object::cast_to<Node3D>(node)) {
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_transform", Object::cast_to<Node3D>(node)->get_transform());
|
||||
undo_redo->add_undo_method(node, "set_transform", Object::cast_to<Node3D>(node)->get_transform());
|
||||
}
|
||||
if (Object::cast_to<Control>(node)) {
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_position", Object::cast_to<Control>(node)->get_position());
|
||||
undo_redo->add_undo_method(node, "set_position", Object::cast_to<Control>(node)->get_position());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
perform_node_renames(nullptr, &path_renames);
|
||||
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void SceneTreeDock::_script_created(Ref<Script> p_script) {
|
||||
@ -1949,34 +1959,35 @@ void SceneTreeDock::_script_created(Ref<Script> p_script) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (selected.size() == 1) {
|
||||
Node *node = selected.front()->get();
|
||||
Ref<Script> existing = node->get_script();
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Attach Script"), UndoRedo::MERGE_DISABLE, node);
|
||||
editor_data->get_undo_redo()->add_do_method(InspectorDock::get_singleton(), "store_script_properties", node);
|
||||
editor_data->get_undo_redo()->add_undo_method(InspectorDock::get_singleton(), "store_script_properties", node);
|
||||
editor_data->get_undo_redo()->add_do_method(node, "set_script", p_script);
|
||||
editor_data->get_undo_redo()->add_undo_method(node, "set_script", existing);
|
||||
editor_data->get_undo_redo()->add_do_method(InspectorDock::get_singleton(), "apply_script_properties", node);
|
||||
editor_data->get_undo_redo()->add_undo_method(InspectorDock::get_singleton(), "apply_script_properties", node);
|
||||
editor_data->get_undo_redo()->add_do_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo()->add_undo_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->create_action(TTR("Attach Script"), UndoRedo::MERGE_DISABLE, node);
|
||||
undo_redo->add_do_method(InspectorDock::get_singleton(), "store_script_properties", node);
|
||||
undo_redo->add_undo_method(InspectorDock::get_singleton(), "store_script_properties", node);
|
||||
undo_redo->add_do_method(node, "set_script", p_script);
|
||||
undo_redo->add_undo_method(node, "set_script", existing);
|
||||
undo_redo->add_do_method(InspectorDock::get_singleton(), "apply_script_properties", node);
|
||||
undo_redo->add_undo_method(InspectorDock::get_singleton(), "apply_script_properties", node);
|
||||
undo_redo->add_do_method(this, "_update_script_button");
|
||||
undo_redo->add_undo_method(this, "_update_script_button");
|
||||
undo_redo->commit_action();
|
||||
} else {
|
||||
editor_data->get_undo_redo()->create_action(TTR("Attach Script"), UndoRedo::MERGE_DISABLE, selected.front()->get());
|
||||
undo_redo->create_action(TTR("Attach Script"), UndoRedo::MERGE_DISABLE, selected.front()->get());
|
||||
for (Node *E : selected) {
|
||||
Ref<Script> existing = E->get_script();
|
||||
editor_data->get_undo_redo()->add_do_method(InspectorDock::get_singleton(), "store_script_properties", E);
|
||||
editor_data->get_undo_redo()->add_undo_method(InspectorDock::get_singleton(), "store_script_properties", E);
|
||||
editor_data->get_undo_redo()->add_do_method(E, "set_script", p_script);
|
||||
editor_data->get_undo_redo()->add_undo_method(E, "set_script", existing);
|
||||
editor_data->get_undo_redo()->add_do_method(InspectorDock::get_singleton(), "apply_script_properties", E);
|
||||
editor_data->get_undo_redo()->add_undo_method(InspectorDock::get_singleton(), "apply_script_properties", E);
|
||||
editor_data->get_undo_redo()->add_do_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo()->add_undo_method(this, "_update_script_button");
|
||||
undo_redo->add_do_method(InspectorDock::get_singleton(), "store_script_properties", E);
|
||||
undo_redo->add_undo_method(InspectorDock::get_singleton(), "store_script_properties", E);
|
||||
undo_redo->add_do_method(E, "set_script", p_script);
|
||||
undo_redo->add_undo_method(E, "set_script", existing);
|
||||
undo_redo->add_do_method(InspectorDock::get_singleton(), "apply_script_properties", E);
|
||||
undo_redo->add_undo_method(InspectorDock::get_singleton(), "apply_script_properties", E);
|
||||
undo_redo->add_do_method(this, "_update_script_button");
|
||||
undo_redo->add_undo_method(this, "_update_script_button");
|
||||
}
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
_push_item(p_script.operator->());
|
||||
@ -1990,10 +2001,11 @@ void SceneTreeDock::_shader_created(Ref<Shader> p_shader) {
|
||||
|
||||
Ref<Shader> existing = selected_shader_material->get_shader();
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Set Shader"));
|
||||
editor_data->get_undo_redo()->add_do_method(selected_shader_material.ptr(), "set_shader", p_shader);
|
||||
editor_data->get_undo_redo()->add_undo_method(selected_shader_material.ptr(), "set_shader", existing);
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("Set Shader"));
|
||||
undo_redo->add_do_method(selected_shader_material.ptr(), "set_shader", p_shader);
|
||||
undo_redo->add_undo_method(selected_shader_material.ptr(), "set_shader", existing);
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
|
||||
void SceneTreeDock::_script_creation_closed() {
|
||||
@ -2058,11 +2070,8 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
|
||||
|
||||
EditorNode::get_singleton()->get_editor_plugins_over()->make_visible(false);
|
||||
|
||||
if (p_cut) {
|
||||
editor_data->get_undo_redo()->create_action(TTR("Cut Node(s)"), UndoRedo::MERGE_DISABLE, remove_list.front()->get());
|
||||
} else {
|
||||
editor_data->get_undo_redo()->create_action(TTR("Remove Node(s)"), UndoRedo::MERGE_DISABLE, remove_list.front()->get());
|
||||
}
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(p_cut ? TTR("Cut Node(s)") : TTR("Remove Node(s)"), UndoRedo::MERGE_DISABLE, remove_list.front()->get());
|
||||
|
||||
bool entire_scene = false;
|
||||
|
||||
@ -2074,11 +2083,11 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
|
||||
}
|
||||
|
||||
if (entire_scene) {
|
||||
editor_data->get_undo_redo()->add_do_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
||||
editor_data->get_undo_redo()->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", edited_scene);
|
||||
editor_data->get_undo_redo()->add_undo_method(edited_scene, "set_owner", edited_scene->get_owner());
|
||||
editor_data->get_undo_redo()->add_undo_method(scene_tree, "update_tree");
|
||||
editor_data->get_undo_redo()->add_undo_reference(edited_scene);
|
||||
undo_redo->add_do_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
||||
undo_redo->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", edited_scene);
|
||||
undo_redo->add_undo_method(edited_scene, "set_owner", edited_scene->get_owner());
|
||||
undo_redo->add_undo_method(scene_tree, "update_tree");
|
||||
undo_redo->add_undo_reference(edited_scene);
|
||||
|
||||
} else {
|
||||
remove_list.sort_custom<Node::Comparator>(); //sort nodes to keep positions
|
||||
@ -2107,21 +2116,21 @@ void SceneTreeDock::_delete_confirm(bool p_cut) {
|
||||
owners.push_back(F);
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->add_do_method(n->get_parent(), "remove_child", n);
|
||||
editor_data->get_undo_redo()->add_undo_method(n->get_parent(), "add_child", n, true);
|
||||
editor_data->get_undo_redo()->add_undo_method(n->get_parent(), "move_child", n, n->get_index());
|
||||
undo_redo->add_do_method(n->get_parent(), "remove_child", n);
|
||||
undo_redo->add_undo_method(n->get_parent(), "add_child", n, true);
|
||||
undo_redo->add_undo_method(n->get_parent(), "move_child", n, n->get_index());
|
||||
if (AnimationPlayerEditor::get_singleton()->get_track_editor()->get_root() == n) {
|
||||
editor_data->get_undo_redo()->add_undo_method(AnimationPlayerEditor::get_singleton()->get_track_editor(), "set_root", n);
|
||||
undo_redo->add_undo_method(AnimationPlayerEditor::get_singleton()->get_track_editor(), "set_root", n);
|
||||
}
|
||||
editor_data->get_undo_redo()->add_undo_method(this, "_set_owners", edited_scene, owners);
|
||||
editor_data->get_undo_redo()->add_undo_reference(n);
|
||||
undo_redo->add_undo_method(this, "_set_owners", edited_scene, owners);
|
||||
undo_redo->add_undo_reference(n);
|
||||
|
||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_remove_and_keep_node", edited_scene->get_path_to(n), n->get_instance_id());
|
||||
editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_restore_node", n->get_instance_id(), edited_scene->get_path_to(n->get_parent()), n->get_index());
|
||||
undo_redo->add_do_method(ed, "live_debug_remove_and_keep_node", edited_scene->get_path_to(n), n->get_instance_id());
|
||||
undo_redo->add_undo_method(ed, "live_debug_restore_node", n->get_instance_id(), edited_scene->get_path_to(n->get_parent()), n->get_index());
|
||||
}
|
||||
}
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
|
||||
// hack, force 2d editor viewport to refresh after deletion
|
||||
if (CanvasItemEditor *editor = CanvasItemEditor::get_singleton()) {
|
||||
@ -2191,28 +2200,29 @@ void SceneTreeDock::_do_create(Node *p_parent) {
|
||||
}
|
||||
child->set_name(new_name);
|
||||
|
||||
editor_data->get_undo_redo()->create_action_for_history(TTR("Create Node"), editor_data->get_current_edited_scene_history_id());
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action_for_history(TTR("Create Node"), editor_data->get_current_edited_scene_history_id());
|
||||
|
||||
if (edited_scene) {
|
||||
editor_data->get_undo_redo()->add_do_method(p_parent, "add_child", child, true);
|
||||
editor_data->get_undo_redo()->add_do_method(child, "set_owner", edited_scene);
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "clear");
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "add_node", child);
|
||||
editor_data->get_undo_redo()->add_do_reference(child);
|
||||
editor_data->get_undo_redo()->add_undo_method(p_parent, "remove_child", child);
|
||||
undo_redo->add_do_method(p_parent, "add_child", child, true);
|
||||
undo_redo->add_do_method(child, "set_owner", edited_scene);
|
||||
undo_redo->add_do_method(editor_selection, "clear");
|
||||
undo_redo->add_do_method(editor_selection, "add_node", child);
|
||||
undo_redo->add_do_reference(child);
|
||||
undo_redo->add_undo_method(p_parent, "remove_child", child);
|
||||
|
||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_create_node", edited_scene->get_path_to(p_parent), child->get_class(), new_name);
|
||||
editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(p_parent)).path_join(new_name)));
|
||||
undo_redo->add_do_method(ed, "live_debug_create_node", edited_scene->get_path_to(p_parent), child->get_class(), new_name);
|
||||
undo_redo->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(p_parent)).path_join(new_name)));
|
||||
|
||||
} else {
|
||||
editor_data->get_undo_redo()->add_do_method(EditorNode::get_singleton(), "set_edited_scene", child);
|
||||
editor_data->get_undo_redo()->add_do_method(scene_tree, "update_tree");
|
||||
editor_data->get_undo_redo()->add_do_reference(child);
|
||||
editor_data->get_undo_redo()->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
||||
undo_redo->add_do_method(EditorNode::get_singleton(), "set_edited_scene", child);
|
||||
undo_redo->add_do_method(scene_tree, "update_tree");
|
||||
undo_redo->add_do_reference(child);
|
||||
undo_redo->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->commit_action();
|
||||
_push_item(c);
|
||||
editor_selection->clear();
|
||||
editor_selection->add_node(child);
|
||||
@ -2393,7 +2403,7 @@ void SceneTreeDock::replace_node(Node *p_node, Node *p_by_node, bool p_keep_prop
|
||||
}
|
||||
//p_remove_old was added to support undo
|
||||
if (p_remove_old) {
|
||||
editor_data->get_undo_redo()->clear_history();
|
||||
EditorNode::get_undo_redo()->clear_history();
|
||||
}
|
||||
newnode->set_name(newname);
|
||||
|
||||
@ -2612,6 +2622,7 @@ void SceneTreeDock::_script_dropped(String p_file, NodePath p_to) {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
if (Input::get_singleton()->is_key_pressed(Key::CTRL)) {
|
||||
Object *obj = ClassDB::instantiate(scr->get_instance_base_type());
|
||||
ERR_FAIL_NULL(obj);
|
||||
@ -2626,29 +2637,29 @@ void SceneTreeDock::_script_dropped(String p_file, NodePath p_to) {
|
||||
new_node->set_name(Node::adjust_name_casing(p_file.get_file().get_basename()));
|
||||
new_node->set_script(scr);
|
||||
|
||||
editor_data->get_undo_redo()->create_action(TTR("Instantiate Script"));
|
||||
editor_data->get_undo_redo()->add_do_method(n, "add_child", new_node, true);
|
||||
editor_data->get_undo_redo()->add_do_method(new_node, "set_owner", edited_scene);
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "clear");
|
||||
editor_data->get_undo_redo()->add_do_method(editor_selection, "add_node", new_node);
|
||||
editor_data->get_undo_redo()->add_do_reference(new_node);
|
||||
editor_data->get_undo_redo()->add_undo_method(n, "remove_child", new_node);
|
||||
undo_redo->create_action(TTR("Instantiate Script"));
|
||||
undo_redo->add_do_method(n, "add_child", new_node, true);
|
||||
undo_redo->add_do_method(new_node, "set_owner", edited_scene);
|
||||
undo_redo->add_do_method(editor_selection, "clear");
|
||||
undo_redo->add_do_method(editor_selection, "add_node", new_node);
|
||||
undo_redo->add_do_reference(new_node);
|
||||
undo_redo->add_undo_method(n, "remove_child", new_node);
|
||||
|
||||
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_create_node", edited_scene->get_path_to(n), new_node->get_class(), new_node->get_name());
|
||||
editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(n)).path_join(new_node->get_name())));
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->add_do_method(ed, "live_debug_create_node", edited_scene->get_path_to(n), new_node->get_class(), new_node->get_name());
|
||||
undo_redo->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(n)).path_join(new_node->get_name())));
|
||||
undo_redo->commit_action();
|
||||
} else {
|
||||
editor_data->get_undo_redo()->create_action(TTR("Attach Script"), UndoRedo::MERGE_DISABLE, n);
|
||||
editor_data->get_undo_redo()->add_do_method(InspectorDock::get_singleton(), "store_script_properties", n);
|
||||
editor_data->get_undo_redo()->add_undo_method(InspectorDock::get_singleton(), "store_script_properties", n);
|
||||
editor_data->get_undo_redo()->add_do_method(n, "set_script", scr);
|
||||
editor_data->get_undo_redo()->add_undo_method(n, "set_script", n->get_script());
|
||||
editor_data->get_undo_redo()->add_do_method(InspectorDock::get_singleton(), "apply_script_properties", n);
|
||||
editor_data->get_undo_redo()->add_undo_method(InspectorDock::get_singleton(), "apply_script_properties", n);
|
||||
editor_data->get_undo_redo()->add_do_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo()->add_undo_method(this, "_update_script_button");
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
undo_redo->create_action(TTR("Attach Script"), UndoRedo::MERGE_DISABLE, n);
|
||||
undo_redo->add_do_method(InspectorDock::get_singleton(), "store_script_properties", n);
|
||||
undo_redo->add_undo_method(InspectorDock::get_singleton(), "store_script_properties", n);
|
||||
undo_redo->add_do_method(n, "set_script", scr);
|
||||
undo_redo->add_undo_method(n, "set_script", n->get_script());
|
||||
undo_redo->add_do_method(InspectorDock::get_singleton(), "apply_script_properties", n);
|
||||
undo_redo->add_undo_method(InspectorDock::get_singleton(), "apply_script_properties", n);
|
||||
undo_redo->add_do_method(this, "_update_script_button");
|
||||
undo_redo->add_undo_method(this, "_update_script_button");
|
||||
undo_redo->commit_action();
|
||||
}
|
||||
}
|
||||
|
||||
@ -3183,7 +3194,7 @@ List<Node *> SceneTreeDock::paste_nodes() {
|
||||
owner = paste_parent;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &ur = editor_data->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &ur = EditorNode::get_undo_redo();
|
||||
ur->create_action(TTR("Paste Node(s)"), UndoRedo::MERGE_DISABLE, EditorNode::get_singleton()->get_edited_scene());
|
||||
ur->add_do_method(editor_selection, "clear");
|
||||
|
||||
@ -3616,7 +3627,7 @@ SceneTreeDock::SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selec
|
||||
create_dialog->connect("favorites_updated", callable_mp(this, &SceneTreeDock::_update_create_root_dialog));
|
||||
|
||||
#ifdef MODULE_REGEX_ENABLED
|
||||
rename_dialog = memnew(RenameDialog(scene_tree, editor_data->get_undo_redo()));
|
||||
rename_dialog = memnew(RenameDialog(scene_tree));
|
||||
add_child(rename_dialog);
|
||||
#endif // MODULE_REGEX_ENABLED
|
||||
|
||||
|
@ -394,7 +394,7 @@ void ShaderGlobalsEditor::_variable_added() {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
Variant value = create_var(RS::GlobalShaderParameterType(variable_type->get_selected()));
|
||||
|
||||
@ -413,7 +413,7 @@ void ShaderGlobalsEditor::_variable_added() {
|
||||
}
|
||||
|
||||
void ShaderGlobalsEditor::_variable_deleted(const String &p_variable) {
|
||||
Ref<EditorUndoRedoManager> undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
undo_redo->create_action(TTR("Add Shader Global Parameter"));
|
||||
undo_redo->add_do_method(RS::get_singleton(), "global_shader_parameter_remove", p_variable);
|
||||
|
@ -459,6 +459,7 @@ void GridMapEditor::_delete_selection() {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("GridMap Delete Selection"));
|
||||
for (int i = selection.begin.x; i <= selection.end.x; i++) {
|
||||
for (int j = selection.begin.y; j <= selection.end.y; j++) {
|
||||
@ -479,6 +480,7 @@ void GridMapEditor::_fill_selection() {
|
||||
return;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("GridMap Fill Selection"));
|
||||
for (int i = selection.begin.x; i <= selection.end.x; i++) {
|
||||
for (int j = selection.begin.y; j <= selection.end.y; j++) {
|
||||
@ -572,6 +574,7 @@ void GridMapEditor::_do_paste() {
|
||||
rot = node->get_basis_with_orthogonal_index(paste_indicator.orientation);
|
||||
|
||||
Vector3 ofs = paste_indicator.current - paste_indicator.click;
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("GridMap Paste Selection"));
|
||||
|
||||
for (const ClipboardItem &item : clipboard_items) {
|
||||
@ -659,6 +662,7 @@ EditorPlugin::AfterGUIInput GridMapEditor::forward_spatial_input_event(Camera3D
|
||||
} else {
|
||||
if ((mb->get_button_index() == MouseButton::RIGHT && input_action == INPUT_ERASE) || (mb->get_button_index() == MouseButton::LEFT && input_action == INPUT_PAINT)) {
|
||||
if (set_items.size()) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("GridMap Paint"));
|
||||
for (const SetItem &si : set_items) {
|
||||
undo_redo->add_do_method(node, "set_cell_item", si.position, si.new_value, si.new_orientation);
|
||||
@ -680,6 +684,7 @@ EditorPlugin::AfterGUIInput GridMapEditor::forward_spatial_input_event(Camera3D
|
||||
}
|
||||
|
||||
if (mb->get_button_index() == MouseButton::LEFT && input_action == INPUT_SELECT) {
|
||||
Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
||||
undo_redo->create_action(TTR("GridMap Selection"));
|
||||
undo_redo->add_do_method(this, "_set_selection", selection.active, selection.begin, selection.end);
|
||||
undo_redo->add_undo_method(this, "_set_selection", last_selection.active, last_selection.begin, last_selection.end);
|
||||
@ -1142,8 +1147,6 @@ void GridMapEditor::_bind_methods() {
|
||||
}
|
||||
|
||||
GridMapEditor::GridMapEditor() {
|
||||
undo_redo = EditorNode::get_singleton()->get_undo_redo();
|
||||
|
||||
int mw = EDITOR_DEF("editors/grid_map/palette_min_width", 230);
|
||||
Control *ec = memnew(Control);
|
||||
ec->set_custom_minimum_size(Size2(mw, 0) * EDSCALE);
|
||||
|
@ -41,7 +41,6 @@
|
||||
#include "scene/gui/spin_box.h"
|
||||
|
||||
class ConfirmationDialog;
|
||||
class EditorUndoRedoManager;
|
||||
class MenuButton;
|
||||
class Node3DEditorPlugin;
|
||||
|
||||
@ -66,7 +65,6 @@ class GridMapEditor : public VBoxContainer {
|
||||
DISPLAY_LIST
|
||||
};
|
||||
|
||||
Ref<EditorUndoRedoManager> undo_redo;
|
||||
InputAction input_action = INPUT_NONE;
|
||||
Panel *panel = nullptr;
|
||||
MenuButton *options = nullptr;
|
||||
|
Loading…
Reference in New Issue
Block a user