| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*  scene_tree_dock.h                                                     */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /*                         This file is part of:                          */ | 
					
						
							|  |  |  | /*                             GODOT ENGINE                               */ | 
					
						
							|  |  |  | /*                        https://godotengine.org                         */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							|  |  |  | /* Copyright (c) 2014-present Godot Engine contributors (see AUTHORS.md). */ | 
					
						
							|  |  |  | /* Copyright (c) 2007-2014 Juan Linietsky, Ariel Manzur.                  */ | 
					
						
							|  |  |  | /*                                                                        */ | 
					
						
							|  |  |  | /* 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.                 */ | 
					
						
							|  |  |  | /**************************************************************************/ | 
					
						
							| 
									
										
										
										
											2018-01-05 00:50:27 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #ifndef SCENE_TREE_DOCK_H
 | 
					
						
							|  |  |  | #define SCENE_TREE_DOCK_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-07 18:59:49 +02:00
										 |  |  | #include "editor/gui/scene_tree_editor.h"
 | 
					
						
							| 
									
										
										
										
											2017-08-26 17:46:49 +02:00
										 |  |  | #include "editor/script_create_dialog.h"
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | #include "scene/gui/box_container.h"
 | 
					
						
							| 
									
										
										
										
											2022-11-19 12:45:49 +01:00
										 |  |  | #include "scene/resources/animation.h"
 | 
					
						
							| 
									
										
										
										
											2017-08-26 17:46:49 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-27 03:15:01 +01:00
										 |  |  | class CheckBox; | 
					
						
							| 
									
										
										
										
											2023-04-05 17:14:46 +02:00
										 |  |  | class EditorData; | 
					
						
							|  |  |  | class EditorSelection; | 
					
						
							| 
									
										
										
										
											2022-11-19 12:45:49 +01:00
										 |  |  | class EditorQuickOpen; | 
					
						
							|  |  |  | class MenuButton; | 
					
						
							|  |  |  | class ReparentDialog; | 
					
						
							|  |  |  | class ShaderCreateDialog; | 
					
						
							| 
									
										
										
										
											2022-11-11 20:12:48 +01:00
										 |  |  | class TextureRect; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-12 13:42:58 +01:00
										 |  |  | #include "modules/modules_enabled.gen.h" // For regex.
 | 
					
						
							| 
									
										
										
										
											2022-02-14 14:00:03 +01:00
										 |  |  | #ifdef MODULE_REGEX_ENABLED
 | 
					
						
							|  |  |  | class RenameDialog; | 
					
						
							|  |  |  | #endif // MODULE_REGEX_ENABLED
 | 
					
						
							| 
									
										
										
										
											2021-11-12 13:42:58 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | class SceneTreeDock : public VBoxContainer { | 
					
						
							| 
									
										
										
										
											2017-01-02 23:03:46 -03:00
										 |  |  | 	GDCLASS(SceneTreeDock, VBoxContainer); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	enum Tool { | 
					
						
							|  |  |  | 		TOOL_NEW, | 
					
						
							| 
									
										
										
										
											2021-06-17 16:03:09 -06:00
										 |  |  | 		TOOL_INSTANTIATE, | 
					
						
							| 
									
										
										
										
											2018-07-07 17:51:18 +03:00
										 |  |  | 		TOOL_EXPAND_COLLAPSE, | 
					
						
							| 
									
										
										
										
											2020-01-07 17:43:21 +01:00
										 |  |  | 		TOOL_CUT, | 
					
						
							|  |  |  | 		TOOL_COPY, | 
					
						
							|  |  |  | 		TOOL_PASTE, | 
					
						
							| 
									
										
										
										
											2023-07-14 17:34:35 +02:00
										 |  |  | 		TOOL_PASTE_AS_SIBLING, | 
					
						
							| 
									
										
										
										
											2018-05-10 22:48:14 -07:00
										 |  |  | 		TOOL_RENAME, | 
					
						
							| 
									
										
										
										
											2021-08-30 20:28:37 -05:00
										 |  |  | #ifdef MODULE_REGEX_ENABLED
 | 
					
						
							| 
									
										
										
										
											2018-01-21 01:12:25 -05:00
										 |  |  | 		TOOL_BATCH_RENAME, | 
					
						
							| 
									
										
										
										
											2021-08-30 20:28:37 -05:00
										 |  |  | #endif // MODULE_REGEX_ENABLED
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 		TOOL_REPLACE, | 
					
						
							| 
									
										
										
										
											2019-10-21 10:27:10 +05:30
										 |  |  | 		TOOL_EXTEND_SCRIPT, | 
					
						
							| 
									
										
										
										
											2016-11-10 01:29:15 +09:00
										 |  |  | 		TOOL_ATTACH_SCRIPT, | 
					
						
							| 
									
										
										
										
											2020-05-09 18:59:19 +02:00
										 |  |  | 		TOOL_DETACH_SCRIPT, | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 		TOOL_MOVE_UP, | 
					
						
							|  |  |  | 		TOOL_MOVE_DOWN, | 
					
						
							|  |  |  | 		TOOL_DUPLICATE, | 
					
						
							|  |  |  | 		TOOL_REPARENT, | 
					
						
							| 
									
										
										
										
											2018-09-12 20:47:12 +02:00
										 |  |  | 		TOOL_REPARENT_TO_NEW_NODE, | 
					
						
							| 
									
										
										
										
											2018-07-15 23:52:57 -03:00
										 |  |  | 		TOOL_MAKE_ROOT, | 
					
						
							| 
									
										
										
										
											2015-11-27 21:42:48 +01:00
										 |  |  | 		TOOL_NEW_SCENE_FROM, | 
					
						
							| 
									
										
										
										
											2015-08-25 00:08:45 -03:00
										 |  |  | 		TOOL_MULTI_EDIT, | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 		TOOL_ERASE, | 
					
						
							| 
									
										
										
										
											2017-01-15 18:56:30 +08:00
										 |  |  | 		TOOL_COPY_NODE_PATH, | 
					
						
							| 
									
										
										
										
											2023-11-14 03:55:36 -08:00
										 |  |  | 		TOOL_SHOW_IN_FILE_SYSTEM, | 
					
						
							| 
									
										
										
										
											2018-10-03 11:25:18 +02:00
										 |  |  | 		TOOL_OPEN_DOCUMENTATION, | 
					
						
							| 
									
										
										
										
											2021-08-09 19:14:06 +02:00
										 |  |  | 		TOOL_AUTO_EXPAND, | 
					
						
							| 
									
										
										
										
											2017-06-30 18:17:33 +02:00
										 |  |  | 		TOOL_SCENE_EDITABLE_CHILDREN, | 
					
						
							|  |  |  | 		TOOL_SCENE_USE_PLACEHOLDER, | 
					
						
							| 
									
										
										
										
											2018-06-23 13:03:05 +02:00
										 |  |  | 		TOOL_SCENE_MAKE_LOCAL, | 
					
						
							| 
									
										
										
										
											2017-06-30 18:17:33 +02:00
										 |  |  | 		TOOL_SCENE_OPEN, | 
					
						
							|  |  |  | 		TOOL_SCENE_CLEAR_INHERITANCE, | 
					
						
							|  |  |  | 		TOOL_SCENE_CLEAR_INHERITANCE_CONFIRM, | 
					
						
							| 
									
										
										
										
											2018-07-15 23:11:29 -03:00
										 |  |  | 		TOOL_SCENE_OPEN_INHERITED, | 
					
						
							| 
									
										
										
										
											2022-04-16 12:23:32 +02:00
										 |  |  | 		TOOL_TOGGLE_SCENE_UNIQUE_NAME, | 
					
						
							| 
									
										
										
										
											2018-07-15 23:11:29 -03:00
										 |  |  | 		TOOL_CREATE_2D_SCENE, | 
					
						
							|  |  |  | 		TOOL_CREATE_3D_SCENE, | 
					
						
							|  |  |  | 		TOOL_CREATE_USER_INTERFACE, | 
					
						
							| 
									
										
										
										
											2018-07-24 22:48:24 -05:00
										 |  |  | 		TOOL_CREATE_FAVORITE, | 
					
						
							| 
									
										
										
										
											2023-11-16 20:58:23 -05:00
										 |  |  | 		TOOL_CENTER_PARENT, | 
					
						
							| 
									
										
										
										
											2018-07-15 23:11:29 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 00:12:19 -03:00
										 |  |  | 	enum { | 
					
						
							|  |  |  | 		EDIT_SUBRESOURCE_BASE = 100 | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	Vector<ObjectID> subresources; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-25 01:32:58 +02:00
										 |  |  | 	bool reset_create_dialog = false; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-02 16:28:25 +02:00
										 |  |  | 	int current_option = 0; | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	CreateDialog *create_dialog = nullptr; | 
					
						
							| 
									
										
										
										
											2021-08-30 20:28:37 -05:00
										 |  |  | #ifdef MODULE_REGEX_ENABLED
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	RenameDialog *rename_dialog = nullptr; | 
					
						
							| 
									
										
										
										
											2021-08-30 20:28:37 -05:00
										 |  |  | #endif // MODULE_REGEX_ENABLED
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	Button *button_add = nullptr; | 
					
						
							|  |  |  | 	Button *button_instance = nullptr; | 
					
						
							|  |  |  | 	Button *button_create_script = nullptr; | 
					
						
							|  |  |  | 	Button *button_detach_script = nullptr; | 
					
						
							|  |  |  | 	MenuButton *button_tree_menu = nullptr; | 
					
						
							| 
									
										
										
										
											2016-05-17 18:27:15 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-03 23:10:07 +02:00
										 |  |  | 	Button *node_shortcuts_toggle = nullptr; | 
					
						
							|  |  |  | 	VBoxContainer *beginner_node_shortcuts = nullptr; | 
					
						
							|  |  |  | 	VBoxContainer *favorite_node_shortcuts = nullptr; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	Button *button_2d = nullptr; | 
					
						
							|  |  |  | 	Button *button_3d = nullptr; | 
					
						
							|  |  |  | 	Button *button_ui = nullptr; | 
					
						
							|  |  |  | 	Button *button_custom = nullptr; | 
					
						
							|  |  |  | 	Button *button_clipboard = nullptr; | 
					
						
							| 
									
										
										
										
											2019-11-10 21:28:56 +05:30
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	HBoxContainer *button_hb = nullptr; | 
					
						
							| 
									
										
										
										
											2020-06-19 20:49:04 +02:00
										 |  |  | 	Button *edit_local, *edit_remote; | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	SceneTreeEditor *scene_tree = nullptr; | 
					
						
							|  |  |  | 	Control *remote_tree = nullptr; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	HBoxContainer *tool_hbc = nullptr; | 
					
						
							| 
									
										
										
										
											2014-05-09 18:50:48 +08:00
										 |  |  | 	void _tool_selected(int p_tool, bool p_confirm_override = false); | 
					
						
							| 
									
										
										
										
											2021-07-16 16:27:59 +02:00
										 |  |  | 	void _property_selected(int p_idx); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-16 16:27:59 +02:00
										 |  |  | 	Node *property_drop_node = nullptr; | 
					
						
							|  |  |  | 	String resource_drop_path; | 
					
						
							| 
									
										
										
										
											2024-02-15 13:25:58 -03:00
										 |  |  | 	void _perform_property_drop(Node *p_node, const String &p_property, Ref<Resource> p_res); | 
					
						
							| 
									
										
										
										
											2021-07-16 16:27:59 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	EditorData *editor_data = nullptr; | 
					
						
							|  |  |  | 	EditorSelection *editor_selection = nullptr; | 
					
						
							| 
									
										
										
										
											2021-02-12 17:36:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-07 17:43:21 +01:00
										 |  |  | 	List<Node *> node_clipboard; | 
					
						
							| 
									
										
										
										
											2023-10-18 16:48:15 +01:00
										 |  |  | 	HashSet<Node *> node_clipboard_edited_scene_owned; | 
					
						
							| 
									
										
										
										
											2021-02-12 17:36:37 +01:00
										 |  |  | 	String clipboard_source_scene; | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	HashMap<String, HashMap<Ref<Resource>, Ref<Resource>>> clipboard_resource_remap; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	ScriptCreateDialog *script_create_dialog = nullptr; | 
					
						
							|  |  |  | 	ShaderCreateDialog *shader_create_dialog = nullptr; | 
					
						
							|  |  |  | 	AcceptDialog *accept = nullptr; | 
					
						
							|  |  |  | 	ConfirmationDialog *delete_dialog = nullptr; | 
					
						
							| 
									
										
										
										
											2022-02-27 03:15:01 +01:00
										 |  |  | 	Label *delete_dialog_label = nullptr; | 
					
						
							|  |  |  | 	CheckBox *delete_tracks_checkbox = nullptr; | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	ConfirmationDialog *editable_instance_remove_dialog = nullptr; | 
					
						
							|  |  |  | 	ConfirmationDialog *placeholder_editable_instance_remove_dialog = nullptr; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	ReparentDialog *reparent_dialog = nullptr; | 
					
						
							|  |  |  | 	EditorQuickOpen *quick_open = nullptr; | 
					
						
							|  |  |  | 	EditorFileDialog *new_scene_from_dialog = nullptr; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-09-16 15:10:28 +02:00
										 |  |  | 	enum FilterMenuItems { | 
					
						
							|  |  |  | 		FILTER_BY_TYPE = 64, // Used in the same menus as the Tool enum.
 | 
					
						
							|  |  |  | 		FILTER_BY_GROUP, | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	LineEdit *filter = nullptr; | 
					
						
							| 
									
										
										
										
											2022-09-16 15:10:28 +02:00
										 |  |  | 	PopupMenu *filter_quick_menu = nullptr; | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	TextureRect *filter_icon = nullptr; | 
					
						
							| 
									
										
										
										
											2016-05-16 12:23:40 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	PopupMenu *menu = nullptr; | 
					
						
							|  |  |  | 	PopupMenu *menu_subresources = nullptr; | 
					
						
							|  |  |  | 	PopupMenu *menu_properties = nullptr; | 
					
						
							|  |  |  | 	ConfirmationDialog *clear_inherit_confirm = nullptr; | 
					
						
							| 
									
										
										
										
											2016-05-15 23:41:48 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-15 08:56:58 -06:00
										 |  |  | 	bool first_enter = true; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _create(); | 
					
						
							| 
									
										
										
										
											2018-09-12 20:47:12 +02:00
										 |  |  | 	void _do_create(Node *p_parent); | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	Node *scene_root = nullptr; | 
					
						
							|  |  |  | 	Node *edited_scene = nullptr; | 
					
						
							| 
									
										
										
										
											2022-05-18 19:19:38 +02:00
										 |  |  | 	Node *pending_click_select = nullptr; | 
					
						
							| 
									
										
										
										
											2022-06-10 15:14:31 +02:00
										 |  |  | 	bool tree_clicked = false; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-04-04 15:06:57 +02:00
										 |  |  | 	VBoxContainer *create_root_dialog = nullptr; | 
					
						
							| 
									
										
										
										
											2018-07-24 22:48:24 -05:00
										 |  |  | 	String selected_favorite_root; | 
					
						
							| 
									
										
										
										
											2018-07-15 23:11:29 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-04 12:24:08 +03:00
										 |  |  | 	Ref<ShaderMaterial> selected_shader_material; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-06-05 00:12:19 -03:00
										 |  |  | 	void _add_children_to_popup(Object *p_obj, int p_depth); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-01-02 11:57:47 -03:00
										 |  |  | 	void _node_reparent(NodePath p_path, bool p_keep_global_xform); | 
					
						
							| 
									
										
										
										
											2016-05-11 11:46:08 -03:00
										 |  |  | 	void _do_reparent(Node *p_new_parent, int p_position_in_parent, Vector<Node *> p_nodes, bool p_keep_global_xform); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _set_owners(Node *p_owner, const Array &p_nodes); | 
					
						
							| 
									
										
										
										
											2018-07-15 23:52:57 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	enum ReplaceOwnerMode { | 
					
						
							|  |  |  | 		MODE_BIDI, | 
					
						
							|  |  |  | 		MODE_DO, | 
					
						
							|  |  |  | 		MODE_UNDO | 
					
						
							|  |  |  | 	}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	void _node_replace_owner(Node *p_base, Node *p_node, Node *p_root, ReplaceOwnerMode p_mode = MODE_BIDI); | 
					
						
							| 
									
										
										
										
											2023-09-16 15:37:56 +02:00
										 |  |  | 	void _node_strip_signal_inheritance(Node *p_node); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _load_request(const String &p_path); | 
					
						
							|  |  |  | 	void _script_open_request(const Ref<Script> &p_script); | 
					
						
							| 
									
										
										
										
											2021-12-09 18:50:57 +01:00
										 |  |  | 	void _push_item(Object *p_object); | 
					
						
							| 
									
										
										
										
											2022-05-18 19:19:38 +02:00
										 |  |  | 	void _handle_select(Node *p_node); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2015-01-19 15:47:50 -05:00
										 |  |  | 	bool _cyclical_dependency_exists(const String &p_target_scene_path, Node *p_desired_node); | 
					
						
							| 
									
										
										
										
											2019-03-14 13:04:16 +08:00
										 |  |  | 	bool _track_inherit(const String &p_target_scene_path, Node *p_desired_node); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _node_selected(); | 
					
						
							| 
									
										
										
										
											2014-09-21 17:56:19 +02:00
										 |  |  | 	void _node_renamed(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _script_created(Ref<Script> p_script); | 
					
						
							| 
									
										
										
										
											2021-06-04 12:24:08 +03:00
										 |  |  | 	void _shader_created(Ref<Shader> p_shader); | 
					
						
							| 
									
										
										
										
											2019-06-29 23:19:45 -04:00
										 |  |  | 	void _script_creation_closed(); | 
					
						
							| 
									
										
										
										
											2021-06-04 12:24:08 +03:00
										 |  |  | 	void _shader_creation_closed(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-07 17:43:21 +01:00
										 |  |  | 	void _delete_confirm(bool p_cut = false); | 
					
						
							| 
									
										
										
										
											2022-02-27 03:15:01 +01:00
										 |  |  | 	void _delete_dialog_closed(); | 
					
						
							| 
									
										
										
										
											2016-05-17 18:27:15 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-05-14 02:11:06 +02:00
										 |  |  | 	void _toggle_editable_children_from_selection(); | 
					
						
							| 
									
										
										
										
											2022-05-12 16:36:37 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _reparent_nodes_to_root(Node *p_root, const Array &p_nodes, Node *p_owner); | 
					
						
							|  |  |  | 	void _reparent_nodes_to_paths_with_transform_and_name(Node *p_root, const Array &p_nodes, const Array &p_paths, const Array &p_transforms, const Array &p_names, Node *p_owner); | 
					
						
							| 
									
										
										
										
											2019-05-14 02:11:06 +02:00
										 |  |  | 	void _toggle_editable_children(Node *p_node); | 
					
						
							| 
									
										
										
										
											2018-09-13 00:49:12 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-09-04 15:02:26 -04:00
										 |  |  | 	void _toggle_placeholder_from_selection(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void _node_prerenamed(Node *p_node, const String &p_new_name); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-03 11:28:20 -03:00
										 |  |  | 	void _nodes_drag_begin(); | 
					
						
							| 
									
										
										
										
											2024-04-07 23:04:36 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	void _handle_hover_to_inspect(); | 
					
						
							|  |  |  | 	void _inspect_hovered_node(); | 
					
						
							|  |  |  | 	void _reset_hovering_timer(); | 
					
						
							|  |  |  | 	Timer *inspect_hovered_node_delay = nullptr; | 
					
						
							|  |  |  | 	Node *node_hovered_now = nullptr; | 
					
						
							|  |  |  | 	Node *node_hovered_previously = nullptr; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-08-22 12:37:22 -03:00
										 |  |  | 	virtual void input(const Ref<InputEvent> &p_event) override; | 
					
						
							| 
									
										
										
										
											2022-01-11 15:59:52 +02:00
										 |  |  | 	virtual void shortcut_input(const Ref<InputEvent> &p_event) override; | 
					
						
							| 
									
										
										
										
											2024-01-15 04:47:47 +04:00
										 |  |  | 	void _scene_tree_gui_input(Ref<InputEvent> p_event); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-15 13:25:58 -03:00
										 |  |  | 	void _new_scene_from(const String &p_file); | 
					
						
							| 
									
										
										
										
											2023-10-04 19:18:22 +02:00
										 |  |  | 	void _set_node_owner_recursive(Node *p_node, Node *p_owner, const HashMap<const Node *, Node *> &p_inverse_duplimap); | 
					
						
							| 
									
										
										
										
											2015-11-27 21:42:48 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-09-02 23:13:40 -03:00
										 |  |  | 	bool _validate_no_foreign(); | 
					
						
							| 
									
										
										
										
											2021-02-22 20:18:14 +01:00
										 |  |  | 	bool _validate_no_instance(); | 
					
						
							| 
									
										
										
										
											2015-08-25 00:08:45 -03:00
										 |  |  | 	void _selection_changed(); | 
					
						
							| 
									
										
										
										
											2018-01-11 21:58:17 +01:00
										 |  |  | 	void _update_script_button(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	void _fill_path_renames(Vector<StringName> base_path, Vector<StringName> new_base_path, Node *p_node, HashMap<Node *, NodePath> *p_renames); | 
					
						
							| 
									
										
										
										
											2022-02-27 03:15:01 +01:00
										 |  |  | 	bool _has_tracks_to_delete(Node *p_node, List<Node *> &p_to_delete) const; | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-06-30 23:19:44 -03:00
										 |  |  | 	void _normalize_drop(Node *&to_node, int &to_pos, int p_type); | 
					
						
							| 
									
										
										
										
											2016-05-11 20:57:52 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-02-15 13:25:58 -03:00
										 |  |  | 	void _nodes_dragged(const Array &p_nodes, NodePath p_to, int p_type); | 
					
						
							|  |  |  | 	void _files_dropped(const Vector<String> &p_files, NodePath p_to, int p_type); | 
					
						
							|  |  |  | 	void _script_dropped(const String &p_file, NodePath p_to); | 
					
						
							| 
									
										
										
										
											2018-10-16 22:03:22 -07:00
										 |  |  | 	void _quick_open(); | 
					
						
							| 
									
										
										
										
											2016-05-11 11:46:08 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-15 23:41:48 -03:00
										 |  |  | 	void _tree_rmb(const Vector2 &p_menu_pos); | 
					
						
							| 
									
										
										
										
											2022-01-20 08:54:36 -03:00
										 |  |  | 	void _update_tree_menu(); | 
					
						
							| 
									
										
										
										
											2016-05-15 23:41:48 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-05-16 12:23:40 -03:00
										 |  |  | 	void _filter_changed(const String &p_filter); | 
					
						
							| 
									
										
										
										
											2022-09-16 15:10:28 +02:00
										 |  |  | 	void _filter_gui_input(const Ref<InputEvent> &p_event); | 
					
						
							|  |  |  | 	void _filter_option_selected(int option); | 
					
						
							|  |  |  | 	void _append_filter_options_to(PopupMenu *p_menu, bool p_include_separator = true); | 
					
						
							| 
									
										
										
										
											2016-05-16 12:23:40 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-06-17 16:03:09 -06:00
										 |  |  | 	void _perform_instantiate_scenes(const Vector<String> &p_files, Node *parent, int p_pos); | 
					
						
							| 
									
										
										
										
											2016-10-11 23:54:46 +09:00
										 |  |  | 	void _replace_with_branch_scene(const String &p_file, Node *base); | 
					
						
							| 
									
										
										
										
											2016-07-20 14:09:03 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-15 22:21:29 -03:00
										 |  |  | 	void _remote_tree_selected(); | 
					
						
							|  |  |  | 	void _local_tree_selected(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-24 22:48:24 -05:00
										 |  |  | 	void _update_create_root_dialog(); | 
					
						
							|  |  |  | 	void _favorite_root_selected(const String &p_class); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-04-08 19:18:03 -03:00
										 |  |  | 	void _feature_profile_changed(); | 
					
						
							| 
									
										
										
										
											2021-02-12 17:36:37 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-01-07 17:43:21 +01:00
										 |  |  | 	void _clear_clipboard(); | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	void _create_remap_for_node(Node *p_node, HashMap<Ref<Resource>, Ref<Resource>> &r_remap); | 
					
						
							|  |  |  | 	void _create_remap_for_resource(Ref<Resource> p_resource, HashMap<Ref<Resource>, Ref<Resource>> &r_remap); | 
					
						
							| 
									
										
										
										
											2019-04-08 19:18:03 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-04-04 15:59:50 +02:00
										 |  |  | 	void _list_all_subresources(PopupMenu *p_menu); | 
					
						
							|  |  |  | 	void _gather_resources(Node *p_node, List<Pair<Ref<Resource>, Node *>> &r_resources); | 
					
						
							|  |  |  | 	void _edit_subresource(int p_idx, const PopupMenu *p_from_menu); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-02-15 08:56:58 -06:00
										 |  |  | 	bool profile_allow_editing = true; | 
					
						
							|  |  |  | 	bool profile_allow_script_editing = true; | 
					
						
							| 
									
										
										
										
											2019-04-08 19:18:03 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-04-27 12:43:49 -03:00
										 |  |  | 	static void _update_configuration_warning(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	bool _update_node_path(Node *p_root_node, NodePath &r_node_path, HashMap<Node *, NodePath> *p_renames) const; | 
					
						
							| 
									
										
										
										
											2023-10-13 13:29:47 +02:00
										 |  |  | 	bool _check_node_path_recursive(Node *p_root_node, Variant &r_variant, HashMap<Node *, NodePath> *p_renames, bool p_inside_resource = false) const; | 
					
						
							| 
									
										
										
										
											2023-06-16 02:33:33 +02:00
										 |  |  | 	bool _check_node_recursive(Variant &r_variant, Node *p_node, Node *p_by_node, const String type_hint, String &r_warn_message); | 
					
						
							|  |  |  | 	void _replace_node(Node *p_node, Node *p_by_node, bool p_keep_properties = true, bool p_remove_old = true); | 
					
						
							| 
									
										
										
										
											2021-06-21 12:09:00 -07:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-11-17 21:08:55 +01:00
										 |  |  | private: | 
					
						
							|  |  |  | 	static SceneTreeDock *singleton; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | public: | 
					
						
							|  |  |  | 	static SceneTreeDock *get_singleton() { return singleton; } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | protected: | 
					
						
							|  |  |  | 	void _notification(int p_what); | 
					
						
							|  |  |  | 	static void _bind_methods(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-03-05 16:44:50 +01:00
										 |  |  | public: | 
					
						
							| 
									
										
										
										
											2016-05-16 12:23:40 -03:00
										 |  |  | 	String get_filter(); | 
					
						
							|  |  |  | 	void set_filter(const String &p_filter); | 
					
						
							| 
									
										
										
										
											2024-02-15 13:25:58 -03:00
										 |  |  | 	void save_branch_to_file(const String &p_directory); | 
					
						
							| 
									
										
										
										
											2016-05-16 12:23:40 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-07-28 14:37:52 -05:00
										 |  |  | 	void _focus_node(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-07-07 01:59:46 +02:00
										 |  |  | 	void add_root_node(Node *p_node); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | 	void set_edited_scene(Node *p_scene); | 
					
						
							| 
									
										
										
										
											2021-06-17 16:03:09 -06:00
										 |  |  | 	void instantiate(const String &p_file); | 
					
						
							|  |  |  | 	void instantiate_scenes(const Vector<String> &p_files, Node *p_parent = nullptr); | 
					
						
							| 
									
										
										
										
											2024-04-14 12:56:49 +02:00
										 |  |  | 	void set_selection(const Vector<Node *> &p_nodes); | 
					
						
							| 
									
										
										
										
											2014-07-02 15:34:46 +08:00
										 |  |  | 	void set_selected(Node *p_node, bool p_emit_selected = false); | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	void fill_path_renames(Node *p_node, Node *p_new_parent, HashMap<Node *, NodePath> *p_renames); | 
					
						
							| 
									
										
										
										
											2022-05-19 17:00:06 +02:00
										 |  |  | 	void perform_node_renames(Node *p_base, HashMap<Node *, NodePath> *p_renames, HashMap<Ref<Animation>, HashSet<int>> *r_rem_anims = nullptr); | 
					
						
							| 
									
										
										
										
											2023-06-16 02:33:33 +02:00
										 |  |  | 	void perform_node_replace(Node *p_base, Node *p_node, Node *p_by_node); | 
					
						
							| 
									
										
										
										
											2015-06-22 00:03:19 -03:00
										 |  |  | 	SceneTreeEditor *get_tree_editor() { return scene_tree; } | 
					
						
							| 
									
										
										
										
											2016-10-26 04:27:24 +09:00
										 |  |  | 	EditorData *get_editor_data() { return editor_data; } | 
					
						
							| 
									
										
										
										
											2016-06-04 13:17:56 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2017-11-15 22:21:29 -03:00
										 |  |  | 	void add_remote_tree_editor(Control *p_remote); | 
					
						
							|  |  |  | 	void show_remote_tree(); | 
					
						
							|  |  |  | 	void hide_remote_tree(); | 
					
						
							| 
									
										
										
										
											2017-11-22 21:50:54 +08:00
										 |  |  | 	void show_tab_buttons(); | 
					
						
							|  |  |  | 	void hide_tab_buttons(); | 
					
						
							| 
									
										
										
										
											2017-11-15 22:21:29 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-06-16 02:33:33 +02:00
										 |  |  | 	void replace_node(Node *p_node, Node *p_by_node); | 
					
						
							| 
									
										
										
										
											2018-02-21 09:38:21 -03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2019-10-21 10:27:10 +05:30
										 |  |  | 	void attach_script_to_selected(bool p_extend); | 
					
						
							|  |  |  | 	void open_script_dialog(Node *p_for_node, bool p_extend); | 
					
						
							| 
									
										
										
										
											2018-06-29 22:08:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2021-09-17 16:35:24 +02:00
										 |  |  | 	void attach_shader_to_selected(int p_preferred_mode = -1); | 
					
						
							| 
									
										
										
										
											2022-04-07 13:23:40 +03:00
										 |  |  | 	void open_shader_dialog(const Ref<ShaderMaterial> &p_for_material, int p_preferred_mode = -1); | 
					
						
							| 
									
										
										
										
											2021-06-04 12:24:08 +03:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-08-25 01:32:58 +02:00
										 |  |  | 	void open_add_child_dialog(); | 
					
						
							|  |  |  | 	void open_instance_child_dialog(); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-07-14 17:34:35 +02:00
										 |  |  | 	List<Node *> paste_nodes(bool p_paste_as_sibling = false); | 
					
						
							| 
									
										
										
										
											2022-01-18 16:35:12 +01:00
										 |  |  | 	List<Node *> get_node_clipboard() const; | 
					
						
							| 
									
										
										
										
											2022-01-18 16:28:44 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-05-13 15:04:37 +02:00
										 |  |  | 	ScriptCreateDialog *get_script_create_dialog() { | 
					
						
							|  |  |  | 		return script_create_dialog; | 
					
						
							|  |  |  | 	} | 
					
						
							| 
									
										
										
										
											2018-06-29 22:08:28 -05:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-27 10:36:51 +01:00
										 |  |  | 	SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selection, EditorData &p_editor_data); | 
					
						
							| 
									
										
										
										
											2020-01-07 17:43:21 +01:00
										 |  |  | 	~SceneTreeDock(); | 
					
						
							| 
									
										
										
										
											2014-02-09 22:10:30 -03:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif // SCENE_TREE_DOCK_H
 |