|
@@ -868,6 +868,7 @@ void CanvasItemEditor::_commit_canvas_item_state(List<CanvasItem *> p_canvas_ite
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
undo_redo->create_action(action_name);
|
|
|
for (CanvasItem *ci : modified_canvas_items) {
|
|
|
CanvasItemEditorSelectedItem *se = editor_selection->get_node_editor_data<CanvasItemEditorSelectedItem>(ci);
|
|
@@ -934,6 +935,7 @@ void CanvasItemEditor::_add_node_pressed(int p_result) {
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
undo_redo->create_action(TTR("Move Node(s) to Position"));
|
|
|
for (Node *node : nodes_to_move) {
|
|
|
CanvasItem *ci = Object::cast_to<CanvasItem>(node);
|
|
@@ -1022,6 +1024,7 @@ void CanvasItemEditor::_on_grid_menu_id_pressed(int p_id) {
|
|
|
}
|
|
|
|
|
|
bool CanvasItemEditor::_gui_input_rulers_and_guides(const Ref<InputEvent> &p_event) {
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
Ref<InputEventMouseButton> b = p_event;
|
|
|
Ref<InputEventMouseMotion> m = p_event;
|
|
|
|
|
@@ -4000,10 +4003,6 @@ void CanvasItemEditor::_selection_changed() {
|
|
|
selected_from_canvas = false;
|
|
|
}
|
|
|
|
|
|
-void CanvasItemEditor::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
|
|
- undo_redo = p_undo_redo;
|
|
|
-}
|
|
|
-
|
|
|
void CanvasItemEditor::edit(CanvasItem *p_canvas_item) {
|
|
|
Array selection = editor_selection->get_selected_nodes();
|
|
|
if (selection.size() != 1 || Object::cast_to<Node>(selection[0]) != p_canvas_item) {
|
|
@@ -4278,6 +4277,7 @@ void CanvasItemEditor::_update_override_camera_button(bool p_game_running) {
|
|
|
}
|
|
|
|
|
|
void CanvasItemEditor::_popup_callback(int p_op) {
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
last_option = MenuOption(p_op);
|
|
|
switch (p_op) {
|
|
|
case SHOW_ORIGIN: {
|
|
@@ -4983,7 +4983,6 @@ CanvasItemEditor::CanvasItemEditor() {
|
|
|
snap_target[0] = SNAP_TARGET_NONE;
|
|
|
snap_target[1] = SNAP_TARGET_NONE;
|
|
|
|
|
|
- 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((CanvasItem *)this, &CanvasItem::queue_redraw));
|
|
@@ -5434,7 +5433,6 @@ CanvasItemEditor::CanvasItemEditor() {
|
|
|
CanvasItemEditor *CanvasItemEditor::singleton = nullptr;
|
|
|
|
|
|
void CanvasItemEditorPlugin::edit(Object *p_object) {
|
|
|
- canvas_item_editor->set_undo_redo(EditorNode::get_undo_redo());
|
|
|
canvas_item_editor->edit(Object::cast_to<CanvasItem>(p_object));
|
|
|
}
|
|
|
|
|
@@ -5581,37 +5579,38 @@ void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &
|
|
|
String name = path.get_file().get_basename();
|
|
|
child->set_name(Node::adjust_name_casing(name));
|
|
|
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
Ref<Texture2D> texture = ResourceCache::get_ref(path);
|
|
|
|
|
|
if (parent) {
|
|
|
- editor_data->get_undo_redo()->add_do_method(parent, "add_child", child, true);
|
|
|
- editor_data->get_undo_redo()->add_do_method(child, "set_owner", EditorNode::get_singleton()->get_edited_scene());
|
|
|
- editor_data->get_undo_redo()->add_do_reference(child);
|
|
|
- editor_data->get_undo_redo()->add_undo_method(parent, "remove_child", child);
|
|
|
+ undo_redo->add_do_method(parent, "add_child", child, true);
|
|
|
+ undo_redo->add_do_method(child, "set_owner", EditorNode::get_singleton()->get_edited_scene());
|
|
|
+ undo_redo->add_do_reference(child);
|
|
|
+ undo_redo->add_undo_method(parent, "remove_child", child);
|
|
|
} else { // If no parent is selected, set as root node of the scene.
|
|
|
- editor_data->get_undo_redo()->add_do_method(EditorNode::get_singleton(), "set_edited_scene", child);
|
|
|
- editor_data->get_undo_redo()->add_do_method(child, "set_owner", EditorNode::get_singleton()->get_edited_scene());
|
|
|
- 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(child, "set_owner", EditorNode::get_singleton()->get_edited_scene());
|
|
|
+ undo_redo->add_do_reference(child);
|
|
|
+ undo_redo->add_undo_method(EditorNode::get_singleton(), "set_edited_scene", (Object *)nullptr);
|
|
|
}
|
|
|
|
|
|
if (parent) {
|
|
|
String new_name = parent->validate_child_name(child);
|
|
|
EditorDebuggerNode *ed = EditorDebuggerNode::get_singleton();
|
|
|
- editor_data->get_undo_redo()->add_do_method(ed, "live_debug_create_node", EditorNode::get_singleton()->get_edited_scene()->get_path_to(parent), child->get_class(), new_name);
|
|
|
- editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_remove_node", NodePath(String(EditorNode::get_singleton()->get_edited_scene()->get_path_to(parent)) + "/" + new_name));
|
|
|
+ undo_redo->add_do_method(ed, "live_debug_create_node", EditorNode::get_singleton()->get_edited_scene()->get_path_to(parent), child->get_class(), new_name);
|
|
|
+ undo_redo->add_undo_method(ed, "live_debug_remove_node", NodePath(String(EditorNode::get_singleton()->get_edited_scene()->get_path_to(parent)) + "/" + new_name));
|
|
|
}
|
|
|
|
|
|
if (Object::cast_to<TouchScreenButton>(child) || Object::cast_to<TextureButton>(child)) {
|
|
|
- editor_data->get_undo_redo()->add_do_property(child, "texture_normal", texture);
|
|
|
+ undo_redo->add_do_property(child, "texture_normal", texture);
|
|
|
} else {
|
|
|
- editor_data->get_undo_redo()->add_do_property(child, "texture", texture);
|
|
|
+ undo_redo->add_do_property(child, "texture", texture);
|
|
|
}
|
|
|
|
|
|
// make visible for certain node type
|
|
|
if (Object::cast_to<Control>(child)) {
|
|
|
Size2 texture_size = texture->get_size();
|
|
|
- editor_data->get_undo_redo()->add_do_property(child, "rect_size", texture_size);
|
|
|
+ undo_redo->add_do_property(child, "rect_size", texture_size);
|
|
|
} else if (Object::cast_to<Polygon2D>(child)) {
|
|
|
Size2 texture_size = texture->get_size();
|
|
|
Vector<Vector2> list = {
|
|
@@ -5620,7 +5619,7 @@ void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &
|
|
|
Vector2(texture_size.width, texture_size.height),
|
|
|
Vector2(0, texture_size.height)
|
|
|
};
|
|
|
- editor_data->get_undo_redo()->add_do_property(child, "polygon", list);
|
|
|
+ undo_redo->add_do_property(child, "polygon", list);
|
|
|
}
|
|
|
|
|
|
// Compute the global position
|
|
@@ -5629,7 +5628,7 @@ void CanvasItemEditorViewport::_create_nodes(Node *parent, Node *child, String &
|
|
|
|
|
|
// there's nothing to be used as source position so snapping will work as absolute if enabled
|
|
|
target_position = canvas_item_editor->snap_point(target_position);
|
|
|
- editor_data->get_undo_redo()->add_do_method(child, "set_global_position", target_position);
|
|
|
+ undo_redo->add_do_method(child, "set_global_position", target_position);
|
|
|
}
|
|
|
|
|
|
bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, const Point2 &p_point) {
|
|
@@ -5654,15 +5653,16 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
|
|
|
|
|
|
instantiated_scene->set_scene_file_path(ProjectSettings::get_singleton()->localize_path(path));
|
|
|
|
|
|
- editor_data->get_undo_redo()->add_do_method(parent, "add_child", instantiated_scene, true);
|
|
|
- editor_data->get_undo_redo()->add_do_method(instantiated_scene, "set_owner", edited_scene);
|
|
|
- editor_data->get_undo_redo()->add_do_reference(instantiated_scene);
|
|
|
- editor_data->get_undo_redo()->add_undo_method(parent, "remove_child", instantiated_scene);
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
+ undo_redo->add_do_method(parent, "add_child", instantiated_scene, true);
|
|
|
+ undo_redo->add_do_method(instantiated_scene, "set_owner", edited_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_instance_node", edited_scene->get_path_to(parent), path, new_name);
|
|
|
- editor_data->get_undo_redo()->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)) + "/" + new_name));
|
|
|
+ undo_redo->add_do_method(ed, "live_debug_instance_node", edited_scene->get_path_to(parent), path, new_name);
|
|
|
+ undo_redo->add_undo_method(ed, "live_debug_remove_node", NodePath(String(edited_scene->get_path_to(parent)) + "/" + new_name));
|
|
|
|
|
|
CanvasItem *instance_ci = Object::cast_to<CanvasItem>(instantiated_scene);
|
|
|
if (instance_ci) {
|
|
@@ -5676,7 +5676,7 @@ bool CanvasItemEditorViewport::_create_instance(Node *parent, String &path, cons
|
|
|
// Preserve instance position of the original scene.
|
|
|
target_pos += instance_ci->_edit_get_position();
|
|
|
|
|
|
- editor_data->get_undo_redo()->add_do_method(instantiated_scene, "set_position", target_pos);
|
|
|
+ undo_redo->add_do_method(instantiated_scene, "set_position", target_pos);
|
|
|
}
|
|
|
|
|
|
return true;
|
|
@@ -5694,7 +5694,8 @@ void CanvasItemEditorViewport::_perform_drop_data() {
|
|
|
|
|
|
Vector<String> error_files;
|
|
|
|
|
|
- editor_data->get_undo_redo()->create_action(TTR("Create Node"));
|
|
|
+ Ref<EditorUndoRedoManager> &undo_redo = EditorNode::get_undo_redo();
|
|
|
+ undo_redo->create_action(TTR("Create Node"));
|
|
|
|
|
|
for (int i = 0; i < selected_files.size(); i++) {
|
|
|
String path = selected_files[i];
|
|
@@ -5725,7 +5726,7 @@ void CanvasItemEditorViewport::_perform_drop_data() {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- editor_data->get_undo_redo()->commit_action();
|
|
|
+ undo_redo->commit_action();
|
|
|
|
|
|
if (error_files.size() > 0) {
|
|
|
String files_str;
|
|
@@ -5918,7 +5919,6 @@ CanvasItemEditorViewport::CanvasItemEditorViewport(CanvasItemEditor *p_canvas_it
|
|
|
texture_node_types.push_back("NinePatchRect");
|
|
|
|
|
|
target_node = nullptr;
|
|
|
- editor_data = SceneTreeDock::get_singleton()->get_editor_data();
|
|
|
canvas_item_editor = p_canvas_item_editor;
|
|
|
preview_node = memnew(Control);
|
|
|
|