diff --git a/doc/classes/EditorInterface.xml b/doc/classes/EditorInterface.xml index 1dd53e13947..beed364974b 100644 --- a/doc/classes/EditorInterface.xml +++ b/doc/classes/EditorInterface.xml @@ -206,6 +206,13 @@ Reloads the scene at the given path. + + + + + Restarts the editor. This closes the editor and then opens the same project. If [param save] is [code]true[/code], the project will be saved before restarting. + + diff --git a/editor/editor_plugin.cpp b/editor/editor_plugin.cpp index 400ad1ebac5..d43eb9375ac 100644 --- a/editor/editor_plugin.cpp +++ b/editor/editor_plugin.cpp @@ -312,6 +312,13 @@ void EditorInterface::set_distraction_free_mode(bool p_enter) { EditorNode::get_singleton()->set_distraction_free_mode(p_enter); } +void EditorInterface::restart_editor(bool p_save) { + if (p_save) { + EditorNode::get_singleton()->save_all_scenes(); + } + EditorNode::get_singleton()->restart_editor(); +} + bool EditorInterface::is_distraction_free_mode_enabled() const { return EditorNode::get_singleton()->is_distraction_free_mode_enabled(); } @@ -360,6 +367,7 @@ void EditorInterface::_bind_methods() { ClassDB::bind_method(D_METHOD("save_scene"), &EditorInterface::save_scene); ClassDB::bind_method(D_METHOD("save_scene_as", "path", "with_preview"), &EditorInterface::save_scene_as, DEFVAL(true)); + ClassDB::bind_method(D_METHOD("restart_editor", "save"), &EditorInterface::restart_editor, DEFVAL(true)); ClassDB::bind_method(D_METHOD("set_main_screen_editor", "name"), &EditorInterface::set_main_screen_editor); ClassDB::bind_method(D_METHOD("set_distraction_free_mode", "enter"), &EditorInterface::set_distraction_free_mode); diff --git a/editor/editor_plugin.h b/editor/editor_plugin.h index 3f9d276b6a5..d20d96051be 100644 --- a/editor/editor_plugin.h +++ b/editor/editor_plugin.h @@ -116,6 +116,7 @@ public: Error save_scene(); void save_scene_as(const String &p_scene, bool p_with_preview = true); + void restart_editor(bool p_save = true); Vector> make_mesh_previews(const Vector> &p_meshes, Vector *p_transforms, int p_preview_size);