You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-10 13:00:37 +00:00
Add per-scene UndoRedo
This commit is contained in:
@@ -4003,15 +4003,15 @@ bool Node3DEditorViewport::_create_instance(Node *parent, String &path, const Po
|
||||
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", EditorNode::get_singleton()->get_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);
|
||||
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", EditorNode::get_singleton()->get_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);
|
||||
|
||||
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", EditorNode::get_singleton()->get_edited_scene()->get_path_to(parent), path, 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));
|
||||
editor_data->get_undo_redo()->add_do_method(ed, "live_debug_instance_node", EditorNode::get_singleton()->get_edited_scene()->get_path_to(parent), path, 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));
|
||||
|
||||
Node3D *node3d = Object::cast_to<Node3D>(instantiated_scene);
|
||||
if (node3d) {
|
||||
@@ -4024,7 +4024,7 @@ bool Node3DEditorViewport::_create_instance(Node *parent, String &path, const Po
|
||||
global_transform.origin = spatial_editor->snap_point(_get_instance_position(p_point));
|
||||
global_transform.basis *= node3d->get_transform().basis;
|
||||
|
||||
editor_data->get_undo_redo().add_do_method(instantiated_scene, "set_global_transform", global_transform);
|
||||
editor_data->get_undo_redo()->add_do_method(instantiated_scene, "set_global_transform", global_transform);
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -4035,15 +4035,15 @@ void Node3DEditorViewport::_perform_drop_data() {
|
||||
GeometryInstance3D *geometry_instance = Object::cast_to<GeometryInstance3D>(ObjectDB::get_instance(spatial_editor->get_preview_material_target()));
|
||||
MeshInstance3D *mesh_instance = Object::cast_to<MeshInstance3D>(ObjectDB::get_instance(spatial_editor->get_preview_material_target()));
|
||||
if (mesh_instance && spatial_editor->get_preview_material_surface() != -1) {
|
||||
editor_data->get_undo_redo().create_action(vformat(TTR("Set Surface %d Override Material"), spatial_editor->get_preview_material_surface()));
|
||||
editor_data->get_undo_redo().add_do_method(geometry_instance, "set_surface_override_material", spatial_editor->get_preview_material_surface(), spatial_editor->get_preview_material());
|
||||
editor_data->get_undo_redo().add_undo_method(geometry_instance, "set_surface_override_material", spatial_editor->get_preview_material_surface(), spatial_editor->get_preview_reset_material());
|
||||
editor_data->get_undo_redo().commit_action();
|
||||
editor_data->get_undo_redo()->create_action(vformat(TTR("Set Surface %d Override Material"), spatial_editor->get_preview_material_surface()));
|
||||
editor_data->get_undo_redo()->add_do_method(geometry_instance, "set_surface_override_material", spatial_editor->get_preview_material_surface(), spatial_editor->get_preview_material());
|
||||
editor_data->get_undo_redo()->add_undo_method(geometry_instance, "set_surface_override_material", spatial_editor->get_preview_material_surface(), spatial_editor->get_preview_reset_material());
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
} else if (geometry_instance) {
|
||||
editor_data->get_undo_redo().create_action(TTR("Set Material Override"));
|
||||
editor_data->get_undo_redo().add_do_method(geometry_instance, "set_material_override", spatial_editor->get_preview_material());
|
||||
editor_data->get_undo_redo().add_undo_method(geometry_instance, "set_material_override", spatial_editor->get_preview_reset_material());
|
||||
editor_data->get_undo_redo().commit_action();
|
||||
editor_data->get_undo_redo()->create_action(TTR("Set Material Override"));
|
||||
editor_data->get_undo_redo()->add_do_method(geometry_instance, "set_material_override", spatial_editor->get_preview_material());
|
||||
editor_data->get_undo_redo()->add_undo_method(geometry_instance, "set_material_override", spatial_editor->get_preview_reset_material());
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
}
|
||||
|
||||
_remove_preview_material();
|
||||
@@ -4054,7 +4054,7 @@ void Node3DEditorViewport::_perform_drop_data() {
|
||||
|
||||
Vector<String> error_files;
|
||||
|
||||
editor_data->get_undo_redo().create_action(TTR("Create Node"));
|
||||
editor_data->get_undo_redo()->create_action(TTR("Create Node"));
|
||||
|
||||
for (int i = 0; i < selected_files.size(); i++) {
|
||||
String path = selected_files[i];
|
||||
@@ -4072,7 +4072,7 @@ void Node3DEditorViewport::_perform_drop_data() {
|
||||
}
|
||||
}
|
||||
|
||||
editor_data->get_undo_redo().commit_action();
|
||||
editor_data->get_undo_redo()->commit_action();
|
||||
|
||||
if (error_files.size() > 0) {
|
||||
String files_str;
|
||||
@@ -7247,6 +7247,14 @@ Vector<int> Node3DEditor::get_subgizmo_selection() {
|
||||
return ret;
|
||||
}
|
||||
|
||||
void Node3DEditor::set_undo_redo(Ref<EditorUndoRedoManager> p_undo_redo) {
|
||||
undo_redo = p_undo_redo;
|
||||
}
|
||||
|
||||
Ref<EditorUndoRedoManager> Node3DEditor::get_undo_redo() {
|
||||
return undo_redo;
|
||||
}
|
||||
|
||||
void Node3DEditor::add_control_to_menu_panel(Control *p_control) {
|
||||
context_menu_hbox->add_child(p_control);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user