summaryrefslogtreecommitdiff
path: root/editor/scene_tree_dock.h
diff options
context:
space:
mode:
Diffstat (limited to 'editor/scene_tree_dock.h')
-rw-r--r--editor/scene_tree_dock.h123
1 files changed, 67 insertions, 56 deletions
diff --git a/editor/scene_tree_dock.h b/editor/scene_tree_dock.h
index 8de9884019..a1d300d3d6 100644
--- a/editor/scene_tree_dock.h
+++ b/editor/scene_tree_dock.h
@@ -5,8 +5,8 @@
/* GODOT ENGINE */
/* https://godotengine.org */
/*************************************************************************/
-/* Copyright (c) 2007-2021 Juan Linietsky, Ariel Manzur. */
-/* Copyright (c) 2014-2021 Godot Engine contributors (cf. AUTHORS.md). */
+/* Copyright (c) 2007-2022 Juan Linietsky, Ariel Manzur. */
+/* Copyright (c) 2014-2022 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 */
@@ -31,12 +31,10 @@
#ifndef SCENE_TREE_DOCK_H
#define SCENE_TREE_DOCK_H
-#include "editor/connections_dialog.h"
#include "editor/create_dialog.h"
#include "editor/editor_data.h"
#include "editor/groups_editor.h"
#include "editor/quick_open.h"
-#include "editor/rename_dialog.h"
#include "editor/reparent_dialog.h"
#include "editor/script_create_dialog.h"
#include "scene/animation/animation_player.h"
@@ -48,7 +46,11 @@
#include "scene/gui/tree.h"
#include "scene_tree_editor.h"
-class EditorNode;
+#include "modules/modules_enabled.gen.h" // For regex.
+#ifdef MODULE_REGEX_ENABLED
+class RenameDialog;
+#endif // MODULE_REGEX_ENABLED
+
class ShaderCreateDialog;
class SceneTreeDock : public VBoxContainer {
@@ -89,7 +91,7 @@ class SceneTreeDock : public VBoxContainer {
TOOL_SCENE_CLEAR_INHERITANCE,
TOOL_SCENE_CLEAR_INHERITANCE_CONFIRM,
TOOL_SCENE_OPEN_INHERITED,
-
+ TOOL_TOGGLE_SCENE_UNIQUE_NAME,
TOOL_CREATE_2D_SCENE,
TOOL_CREATE_3D_SCENE,
TOOL_CREATE_USER_INTERFACE,
@@ -103,75 +105,75 @@ class SceneTreeDock : public VBoxContainer {
Vector<ObjectID> subresources;
- bool restore_script_editor_on_drag;
+ bool restore_script_editor_on_drag = false;
bool reset_create_dialog = false;
- int current_option;
- CreateDialog *create_dialog;
+ int current_option = 0;
+ CreateDialog *create_dialog = nullptr;
#ifdef MODULE_REGEX_ENABLED
- RenameDialog *rename_dialog;
+ RenameDialog *rename_dialog = nullptr;
#endif // MODULE_REGEX_ENABLED
- Button *button_add;
- Button *button_instance;
- Button *button_create_script;
- Button *button_detach_script;
- Button *button_tree_menu;
+ Button *button_add = nullptr;
+ Button *button_instance = nullptr;
+ Button *button_create_script = nullptr;
+ Button *button_detach_script = nullptr;
+ MenuButton *button_tree_menu = nullptr;
- Button *button_2d;
- Button *button_3d;
- Button *button_ui;
- Button *button_custom;
+ Button *button_2d = nullptr;
+ Button *button_3d = nullptr;
+ Button *button_ui = nullptr;
+ Button *button_custom = nullptr;
+ Button *button_clipboard = nullptr;
- HBoxContainer *button_hb;
+ HBoxContainer *button_hb = nullptr;
Button *edit_local, *edit_remote;
- SceneTreeEditor *scene_tree;
- Control *remote_tree;
+ SceneTreeEditor *scene_tree = nullptr;
+ Control *remote_tree = nullptr;
- HBoxContainer *tool_hbc;
+ HBoxContainer *tool_hbc = nullptr;
void _tool_selected(int p_tool, bool p_confirm_override = false);
void _property_selected(int p_idx);
void _node_collapsed(Object *p_obj);
Node *property_drop_node = nullptr;
String resource_drop_path;
- void _perform_property_drop(Node *p_node, String p_property, RES p_res);
+ void _perform_property_drop(Node *p_node, String p_property, Ref<Resource> p_res);
- EditorData *editor_data;
- EditorSelection *editor_selection;
+ EditorData *editor_data = nullptr;
+ EditorSelection *editor_selection = nullptr;
List<Node *> node_clipboard;
String clipboard_source_scene;
- HashMap<String, Map<RES, RES>> clipboard_resource_remap;
+ HashMap<String, Map<Ref<Resource>, Ref<Resource>>> clipboard_resource_remap;
- ScriptCreateDialog *script_create_dialog;
- ShaderCreateDialog *shader_create_dialog;
- AcceptDialog *accept;
- ConfirmationDialog *delete_dialog;
- ConfirmationDialog *editable_instance_remove_dialog;
- ConfirmationDialog *placeholder_editable_instance_remove_dialog;
+ ScriptCreateDialog *script_create_dialog = nullptr;
+ ShaderCreateDialog *shader_create_dialog = nullptr;
+ AcceptDialog *accept = nullptr;
+ ConfirmationDialog *delete_dialog = nullptr;
+ ConfirmationDialog *editable_instance_remove_dialog = nullptr;
+ ConfirmationDialog *placeholder_editable_instance_remove_dialog = nullptr;
- ReparentDialog *reparent_dialog;
- EditorQuickOpen *quick_open;
- EditorFileDialog *new_scene_from_dialog;
+ ReparentDialog *reparent_dialog = nullptr;
+ EditorQuickOpen *quick_open = nullptr;
+ EditorFileDialog *new_scene_from_dialog = nullptr;
- LineEdit *filter;
- TextureRect *filter_icon;
+ LineEdit *filter = nullptr;
+ TextureRect *filter_icon = nullptr;
- PopupMenu *menu;
- PopupMenu *menu_subresources;
- PopupMenu *menu_properties;
- ConfirmationDialog *clear_inherit_confirm;
+ PopupMenu *menu = nullptr;
+ PopupMenu *menu_subresources = nullptr;
+ PopupMenu *menu_properties = nullptr;
+ ConfirmationDialog *clear_inherit_confirm = nullptr;
- bool first_enter;
+ bool first_enter = true;
void _create();
void _do_create(Node *p_parent);
- Node *scene_root;
- Node *edited_scene;
- EditorNode *editor;
+ Node *scene_root = nullptr;
+ Node *edited_scene = nullptr;
- VBoxContainer *create_root_dialog;
+ VBoxContainer *create_root_dialog = nullptr;
String selected_favorite_root;
Ref<ShaderMaterial> selected_shader_material;
@@ -195,6 +197,7 @@ class SceneTreeDock : public VBoxContainer {
void _node_replace_owner(Node *p_base, Node *p_node, Node *p_root, ReplaceOwnerMode p_mode = MODE_BIDI);
void _load_request(const String &p_path);
void _script_open_request(const Ref<Script> &p_script);
+ void _push_item(Object *p_object);
bool _cyclical_dependency_exists(const String &p_target_scene_path, Node *p_desired_node);
bool _track_inherit(const String &p_target_scene_path, Node *p_desired_node);
@@ -217,7 +220,7 @@ class SceneTreeDock : public VBoxContainer {
void _nodes_drag_begin();
virtual void input(const Ref<InputEvent> &p_event) override;
- virtual void unhandled_key_input(const Ref<InputEvent> &p_event) override;
+ virtual void shortcut_input(const Ref<InputEvent> &p_event) override;
void _import_subscene();
@@ -239,7 +242,7 @@ class SceneTreeDock : public VBoxContainer {
void _quick_open();
void _tree_rmb(const Vector2 &p_menu_pos);
- void _open_tree_menu();
+ void _update_tree_menu();
void _filter_changed(const String &p_filter);
@@ -255,18 +258,23 @@ class SceneTreeDock : public VBoxContainer {
void _feature_profile_changed();
void _clear_clipboard();
- void _create_remap_for_node(Node *p_node, Map<RES, RES> &r_remap);
- void _create_remap_for_resource(RES p_resource, Map<RES, RES> &r_remap);
+ void _create_remap_for_node(Node *p_node, Map<Ref<Resource>, Ref<Resource>> &r_remap);
+ void _create_remap_for_resource(Ref<Resource> p_resource, Map<Ref<Resource>, Ref<Resource>> &r_remap);
- bool profile_allow_editing;
- bool profile_allow_script_editing;
+ bool profile_allow_editing = true;
+ bool profile_allow_script_editing = true;
- static SceneTreeDock *singleton;
static void _update_configuration_warning();
bool _update_node_path(Node *p_root_node, NodePath &r_node_path, Map<Node *, NodePath> *p_renames) const;
bool _check_node_path_recursive(Node *p_root_node, Variant &r_variant, Map<Node *, NodePath> *p_renames) const;
+private:
+ static SceneTreeDock *singleton;
+
+public:
+ static SceneTreeDock *get_singleton() { return singleton; }
+
protected:
void _notification(int p_what);
static void _bind_methods();
@@ -301,14 +309,17 @@ public:
void open_script_dialog(Node *p_for_node, bool p_extend);
void attach_shader_to_selected(int p_preferred_mode = -1);
- void open_shader_dialog(Ref<ShaderMaterial> &p_for_material, int p_preferred_mode = -1);
+ void open_shader_dialog(const Ref<ShaderMaterial> &p_for_material, int p_preferred_mode = -1);
void open_add_child_dialog();
void open_instance_child_dialog();
+ List<Node *> paste_nodes();
+ List<Node *> get_node_clipboard() const;
+
ScriptCreateDialog *get_script_create_dialog() { return script_create_dialog; }
- SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSelection *p_editor_selection, EditorData &p_editor_data);
+ SceneTreeDock(Node *p_scene_root, EditorSelection *p_editor_selection, EditorData &p_editor_data);
~SceneTreeDock();
};