diff options
| author | Rémi Verschelde <remi@verschelde.fr> | 2021-02-18 15:15:19 +0100 | 
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-02-18 15:15:19 +0100 | 
| commit | 72f74eb29e9e95928c8027da21151a32bad88300 (patch) | |
| tree | a9a645f25bdaaab56515aadc485dd585256fdda0 | |
| parent | 82033bf9b4ec90a59057bb3e6e1f405b9552277d (diff) | |
| parent | 6b4faa355cc966b4e6cffa51b4ad9b3bda7eb3ae (diff) | |
Merge pull request #45943 from KoBeWi/YEEEET
Remove Merge From Scene
| -rw-r--r-- | editor/editor_node.cpp | 10 | ||||
| -rw-r--r-- | editor/editor_node.h | 3 | ||||
| -rw-r--r-- | editor/editor_sub_scene.cpp | 265 | ||||
| -rw-r--r-- | editor/editor_sub_scene.h | 71 | ||||
| -rw-r--r-- | editor/scene_tree_dock.cpp | 30 | ||||
| -rw-r--r-- | editor/scene_tree_dock.h | 3 | 
6 files changed, 0 insertions, 382 deletions
| diff --git a/editor/editor_node.cpp b/editor/editor_node.cpp index 57fa552845..72bf39a367 100644 --- a/editor/editor_node.cpp +++ b/editor/editor_node.cpp @@ -2520,16 +2520,6 @@ void EditorNode::_menu_option_confirm(int p_option, bool p_confirmed) {  		} break; -		case FILE_IMPORT_SUBSCENE: { -			if (!editor_data.get_edited_scene_root()) { -				show_accept(TTR("This operation can't be done without a selected node."), TTR("OK")); -				break; -			} - -			scene_tree_dock->import_subscene(); - -		} break; -  		case FILE_EXTERNAL_OPEN_SCENE: {  			if (unsaved_cache && !p_confirmed) {  				confirmation->get_ok_button()->set_text(TTR("Open")); diff --git a/editor/editor_node.h b/editor/editor_node.h index 8068ca89ee..8740488d18 100644 --- a/editor/editor_node.h +++ b/editor/editor_node.h @@ -128,7 +128,6 @@ private:  		FILE_SAVE_ALL_SCENES,  		FILE_SAVE_AND_RUN,  		FILE_SHOW_IN_FILESYSTEM, -		FILE_IMPORT_SUBSCENE,  		FILE_EXPORT_PROJECT,  		FILE_EXPORT_MESH_LIBRARY,  		FILE_INSTALL_ANDROID_SOURCE, @@ -719,8 +718,6 @@ public:  	void save_resource(const Ref<Resource> &p_resource);  	void save_resource_as(const Ref<Resource> &p_resource, const String &p_at_path = String()); -	void merge_from_scene() { _menu_option_confirm(FILE_IMPORT_SUBSCENE, false); } -  	void show_about() { _menu_option_confirm(HELP_ABOUT, false); }  	static bool has_unsaved_changes() { return singleton->unsaved_cache; } diff --git a/editor/editor_sub_scene.cpp b/editor/editor_sub_scene.cpp deleted file mode 100644 index e319fbff52..0000000000 --- a/editor/editor_sub_scene.cpp +++ /dev/null @@ -1,265 +0,0 @@ -/*************************************************************************/ -/*  editor_sub_scene.cpp                                                 */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                      https://godotengine.org                          */ -/*************************************************************************/ -/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */ -/*                                                                       */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the       */ -/* "Software"), to deal in the Software without restriction, including   */ -/* without limitation the rights to use, copy, modify, merge, publish,   */ -/* distribute, sublicense, and/or sell copies of the Software, and to    */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions:                                             */ -/*                                                                       */ -/* The above copyright notice and this permission notice shall be        */ -/* included in all copies or substantial portions of the Software.       */ -/*                                                                       */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ -/*************************************************************************/ - -#include "editor_sub_scene.h" - -#include "editor/editor_node.h" -#include "scene/gui/margin_container.h" -#include "scene/resources/packed_scene.h" - -void EditorSubScene::_path_selected(const String &p_path) { -	path->set_text(p_path); -	_path_changed(p_path); -} - -void EditorSubScene::_path_changed(const String &p_path) { -	tree->clear(); - -	if (scene) { -		memdelete(scene); -		scene = nullptr; -	} - -	if (p_path == "") { -		return; -	} - -	Ref<PackedScene> ps = ResourceLoader::load(p_path, "PackedScene"); - -	if (ps.is_null()) { -		return; -	} - -	scene = ps->instance(); -	if (!scene) { -		return; -	} - -	_fill_tree(scene, nullptr); -} - -void EditorSubScene::_path_browse() { -	file_dialog->popup_file_dialog(); -} - -void EditorSubScene::_notification(int p_what) { -	if (p_what == NOTIFICATION_VISIBILITY_CHANGED) { -		if (is_visible() && scene == nullptr) { -			_path_browse(); -		} -	} -} - -void EditorSubScene::_fill_tree(Node *p_node, TreeItem *p_parent) { -	TreeItem *it = tree->create_item(p_parent); -	it->set_metadata(0, p_node); -	it->set_text(0, p_node->get_name()); -	it->set_editable(0, false); -	it->set_selectable(0, true); -	it->set_icon(0, EditorNode::get_singleton()->get_object_icon(p_node, "Node")); - -	for (int i = 0; i < p_node->get_child_count(); i++) { -		Node *c = p_node->get_child(i); -		if (c->get_owner() != scene) { -			continue; -		} -		_fill_tree(c, it); -	} -} - -void EditorSubScene::_selected_changed() { -	TreeItem *item = tree->get_selected(); -	ERR_FAIL_COND(!item); -	Node *n = item->get_metadata(0); - -	if (!n || !selection.find(n)) { -		selection.clear(); -		is_root = false; -	} -} - -void EditorSubScene::_item_multi_selected(Object *p_object, int p_cell, bool p_selected) { -	if (!is_root) { -		TreeItem *item = Object::cast_to<TreeItem>(p_object); -		ERR_FAIL_COND(!item); - -		Node *n = item->get_metadata(0); - -		if (!n) { -			return; -		} -		if (p_selected) { -			if (n == scene) { -				is_root = true; -				selection.clear(); -			} -			selection.push_back(n); -		} else { -			List<Node *>::Element *E = selection.find(n); - -			if (E) { -				selection.erase(E); -			} -		} -	} -} - -void EditorSubScene::_item_activated() { -	_ok_pressed(); // From AcceptDialog. -} - -void EditorSubScene::_remove_selection_child(Node *p_node) { -	if (p_node->get_child_count() > 0) { -		for (int i = 0; i < p_node->get_child_count(); i++) { -			Node *c = p_node->get_child(i); -			List<Node *>::Element *E = selection.find(c); -			if (E) { -				selection.move_to_back(E); -				selection.pop_back(); -			} -			if (c->get_child_count() > 0) { -				_remove_selection_child(c); -			} -		} -	} -} - -void EditorSubScene::ok_pressed() { -	if (selection.size() <= 0) { -		return; -	} -	for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { -		Node *c = E->get(); -		_remove_selection_child(c); -	} -	emit_signal("subscene_selected"); -	hide(); -	clear(); -} - -void EditorSubScene::_reown(Node *p_node, List<Node *> *p_to_reown) { -	if (p_node == scene) { -		scene->set_filename(""); -		p_to_reown->push_back(p_node); -	} else if (p_node->get_owner() == scene) { -		p_to_reown->push_back(p_node); -	} - -	for (int i = 0; i < p_node->get_child_count(); i++) { -		Node *c = p_node->get_child(i); -		_reown(c, p_to_reown); -	} -} - -void EditorSubScene::move(Node *p_new_parent, Node *p_new_owner) { -	if (!scene) { -		return; -	} - -	if (selection.size() <= 0) { -		return; -	} - -	for (List<Node *>::Element *E = selection.front(); E; E = E->next()) { -		Node *selnode = E->get(); -		if (!selnode) { -			return; -		} -		List<Node *> to_reown; -		_reown(selnode, &to_reown); -		if (selnode != scene) { -			selnode->get_parent()->remove_child(selnode); -		} - -		p_new_parent->add_child(selnode); -		for (List<Node *>::Element *F = to_reown.front(); F; F = F->next()) { -			F->get()->set_owner(p_new_owner); -		} -	} -	if (!is_root) { -		memdelete(scene); -	} -	scene = nullptr; -	//return selnode; -} - -void EditorSubScene::clear() { -	path->set_text(""); -	_path_changed(""); -} - -void EditorSubScene::_bind_methods() { -	ADD_SIGNAL(MethodInfo("subscene_selected")); -} - -EditorSubScene::EditorSubScene() { -	scene = nullptr; -	is_root = false; - -	set_title(TTR("Select Node(s) to Import")); -	set_hide_on_ok(false); - -	VBoxContainer *vb = memnew(VBoxContainer); -	add_child(vb); -	//set_child_rect(vb); - -	HBoxContainer *hb = memnew(HBoxContainer); -	path = memnew(LineEdit); -	path->connect("text_entered", callable_mp(this, &EditorSubScene::_path_changed)); -	hb->add_child(path); -	path->set_h_size_flags(Control::SIZE_EXPAND_FILL); -	Button *b = memnew(Button); -	b->set_text(TTR("Browse")); -	hb->add_child(b); -	b->connect("pressed", callable_mp(this, &EditorSubScene::_path_browse)); -	vb->add_margin_child(TTR("Scene Path:"), hb); - -	tree = memnew(Tree); -	tree->set_v_size_flags(Control::SIZE_EXPAND_FILL); -	vb->add_margin_child(TTR("Import From Node:"), tree, true); -	tree->set_select_mode(Tree::SELECT_MULTI); -	tree->connect("multi_selected", callable_mp(this, &EditorSubScene::_item_multi_selected)); -	//tree->connect("nothing_selected", this, "_deselect_items"); -	tree->connect("cell_selected", callable_mp(this, &EditorSubScene::_selected_changed)); - -	tree->connect("item_activated", callable_mp(this, &EditorSubScene::_item_activated), make_binds(), CONNECT_DEFERRED); - -	file_dialog = memnew(EditorFileDialog); -	List<String> extensions; -	ResourceLoader::get_recognized_extensions_for_type("PackedScene", &extensions); - -	for (List<String>::Element *E = extensions.front(); E; E = E->next()) { -		file_dialog->add_filter("*." + E->get()); -	} - -	file_dialog->set_file_mode(EditorFileDialog::FILE_MODE_OPEN_FILE); -	add_child(file_dialog); -	file_dialog->connect("file_selected", callable_mp(this, &EditorSubScene::_path_selected)); -} diff --git a/editor/editor_sub_scene.h b/editor/editor_sub_scene.h deleted file mode 100644 index 428bd5a40e..0000000000 --- a/editor/editor_sub_scene.h +++ /dev/null @@ -1,71 +0,0 @@ -/*************************************************************************/ -/*  editor_sub_scene.h                                                   */ -/*************************************************************************/ -/*                       This file is part of:                           */ -/*                           GODOT ENGINE                                */ -/*                      https://godotengine.org                          */ -/*************************************************************************/ -/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur.                 */ -/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md).   */ -/*                                                                       */ -/* Permission is hereby granted, free of charge, to any person obtaining */ -/* a copy of this software and associated documentation files (the       */ -/* "Software"), to deal in the Software without restriction, including   */ -/* without limitation the rights to use, copy, modify, merge, publish,   */ -/* distribute, sublicense, and/or sell copies of the Software, and to    */ -/* permit persons to whom the Software is furnished to do so, subject to */ -/* the following conditions:                                             */ -/*                                                                       */ -/* The above copyright notice and this permission notice shall be        */ -/* included in all copies or substantial portions of the Software.       */ -/*                                                                       */ -/* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,       */ -/* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF    */ -/* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.*/ -/* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY  */ -/* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,  */ -/* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE     */ -/* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.                */ -/*************************************************************************/ - -#ifndef EDITOR_SUB_SCENE_H -#define EDITOR_SUB_SCENE_H - -#include "editor/editor_file_dialog.h" -#include "scene/gui/dialogs.h" -#include "scene/gui/tree.h" - -class EditorSubScene : public ConfirmationDialog { -	GDCLASS(EditorSubScene, ConfirmationDialog); - -	List<Node *> selection; -	LineEdit *path; -	Tree *tree; -	Node *scene; -	bool is_root; - -	EditorFileDialog *file_dialog; - -	void _fill_tree(Node *p_node, TreeItem *p_parent); -	void _selected_changed(); -	void _item_multi_selected(Object *p_object, int p_cell, bool p_selected); -	void _item_activated(); -	void _remove_selection_child(Node *p_node); -	void _reown(Node *p_node, List<Node *> *p_to_reown); - -	void ok_pressed() override; - -protected: -	void _notification(int p_what); -	static void _bind_methods(); -	void _path_browse(); -	void _path_selected(const String &p_path); -	void _path_changed(const String &p_path); - -public: -	void move(Node *p_new_parent, Node *p_new_owner); -	void clear(); -	EditorSubScene(); -}; - -#endif // EDITOR_SUB_SCENE_H diff --git a/editor/scene_tree_dock.cpp b/editor/scene_tree_dock.cpp index 0ba67d05dd..48c4d33184 100644 --- a/editor/scene_tree_dock.cpp +++ b/editor/scene_tree_dock.cpp @@ -107,8 +107,6 @@ void SceneTreeDock::_unhandled_key_input(Ref<InputEvent> p_event) {  		_tool_selected(TOOL_MOVE_DOWN);  	} else if (ED_IS_SHORTCUT("scene_tree/reparent", p_event)) {  		_tool_selected(TOOL_REPARENT); -	} else if (ED_IS_SHORTCUT("scene_tree/merge_from_scene", p_event)) { -		_tool_selected(TOOL_MERGE_FROM_SCENE);  	} else if (ED_IS_SHORTCUT("scene_tree/save_branch_as_scene", p_event)) {  		_tool_selected(TOOL_NEW_SCENE_FROM);  	} else if (ED_IS_SHORTCUT("scene_tree/delete_no_confirm", p_event)) { @@ -880,13 +878,6 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {  			}  		} break; -		case TOOL_MERGE_FROM_SCENE: { -			if (!profile_allow_editing) { -				break; -			} - -			EditorNode::get_singleton()->merge_from_scene(); -		} break;  		case TOOL_NEW_SCENE_FROM: {  			if (!profile_allow_editing) {  				break; @@ -2291,21 +2282,6 @@ void SceneTreeDock::set_selected(Node *p_node, bool p_emit_selected) {  	scene_tree->set_selected(p_node, p_emit_selected);  } -void SceneTreeDock::import_subscene() { -	import_subscene_dialog->popup_centered_clamped(Size2(500, 800) * EDSCALE, 0.8); -} - -void SceneTreeDock::_import_subscene() { -	Node *parent = scene_tree->get_selected(); -	if (!parent) { -		parent = editor_data->get_edited_scene_root(); -		ERR_FAIL_COND(!parent); -	} - -	import_subscene_dialog->move(parent, edited_scene); -	editor_data->get_undo_redo().clear_history(); //no undo for now.. -} -  void SceneTreeDock::_new_scene_from(String p_file) {  	List<Node *> selection = editor_selection->get_selected_node_list(); @@ -2622,7 +2598,6 @@ void SceneTreeDock::_tree_rmb(const Vector2 &p_menu_pos) {  	if (selection.size() == 1) {  		if (profile_allow_editing) {  			menu->add_separator(); -			menu->add_icon_shortcut(get_theme_icon("Blend", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/merge_from_scene"), TOOL_MERGE_FROM_SCENE);  			menu->add_icon_shortcut(get_theme_icon("CreateNewSceneFrom", "EditorIcons"), ED_GET_SHORTCUT("scene_tree/save_branch_as_scene"), TOOL_NEW_SCENE_FROM);  		}  		if (full_selection.size() == 1) { @@ -3000,7 +2975,6 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel  	ED_SHORTCUT("scene_tree/reparent", TTR("Reparent"));  	ED_SHORTCUT("scene_tree/reparent_to_new_node", TTR("Reparent to New Node"));  	ED_SHORTCUT("scene_tree/make_root", TTR("Make Scene Root")); -	ED_SHORTCUT("scene_tree/merge_from_scene", TTR("Merge From Scene"));  	ED_SHORTCUT("scene_tree/save_branch_as_scene", TTR("Save Branch as Scene"));  	ED_SHORTCUT("scene_tree/copy_node_path", TTR("Copy Node Path"), KEY_MASK_CMD | KEY_MASK_SHIFT | KEY_C);  	ED_SHORTCUT("scene_tree/delete_no_confirm", TTR("Delete (No Confirm)"), KEY_MASK_SHIFT | KEY_DELETE); @@ -3130,10 +3104,6 @@ SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSel  	add_child(placeholder_editable_instance_remove_dialog);  	placeholder_editable_instance_remove_dialog->connect("confirmed", callable_mp(this, &SceneTreeDock::_toggle_placeholder_from_selection)); -	import_subscene_dialog = memnew(EditorSubScene); -	add_child(import_subscene_dialog); -	import_subscene_dialog->connect("subscene_selected", callable_mp(this, &SceneTreeDock::_import_subscene)); -  	new_scene_from_dialog = memnew(EditorFileDialog);  	new_scene_from_dialog->set_file_mode(EditorFileDialog::FILE_MODE_SAVE_FILE);  	add_child(new_scene_from_dialog); diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h index a042188be6..9bc281c7fb 100644 --- a/editor/scene_tree_dock.h +++ b/editor/scene_tree_dock.h @@ -34,7 +34,6 @@  #include "editor/connections_dialog.h"  #include "editor/create_dialog.h"  #include "editor/editor_data.h" -#include "editor/editor_sub_scene.h"  #include "editor/groups_editor.h"  #include "editor/quick_open.h"  #include "editor/rename_dialog.h" @@ -74,7 +73,6 @@ class SceneTreeDock : public VBoxContainer {  		TOOL_REPARENT_TO_NEW_NODE,  		TOOL_MAKE_ROOT,  		TOOL_NEW_SCENE_FROM, -		TOOL_MERGE_FROM_SCENE,  		TOOL_MULTI_EDIT,  		TOOL_ERASE,  		TOOL_COPY_NODE_PATH, @@ -141,7 +139,6 @@ class SceneTreeDock : public VBoxContainer {  	ReparentDialog *reparent_dialog;  	EditorQuickOpen *quick_open; -	EditorSubScene *import_subscene_dialog;  	EditorFileDialog *new_scene_from_dialog;  	LineEdit *filter; |