Browse Source

Expose edit_node() for editor plugins

(cherry picked from commit 72014a7a2edd3664f146965c529c5b167e3a2a26)
kobewi 4 years ago
parent
commit
f72c91e0b1

+ 9 - 0
doc/classes/EditorInterface.xml

@@ -10,6 +10,15 @@
 	<tutorials>
 	<tutorials>
 	</tutorials>
 	</tutorials>
 	<methods>
 	<methods>
+		<method name="edit_node">
+			<return type="void">
+			</return>
+			<argument index="0" name="node" type="Node">
+			</argument>
+			<description>
+				Edits the given [Node]. The node will be also selected if it's inside the scene tree.
+			</description>
+		</method>
 		<method name="edit_resource">
 		<method name="edit_resource">
 			<return type="void">
 			<return type="void">
 			</return>
 			</return>

+ 1 - 0
doc/classes/EditorSelection.xml

@@ -17,6 +17,7 @@
 			</argument>
 			</argument>
 			<description>
 			<description>
 				Adds a node to the selection.
 				Adds a node to the selection.
+				[b]Note:[/b] The newly selected node will not be automatically edited in the inspector. If you want to edit a node, use [method EditorInterface.edit_node].
 			</description>
 			</description>
 		</method>
 		</method>
 		<method name="clear">
 		<method name="clear">

+ 5 - 0
editor/editor_plugin.cpp

@@ -166,6 +166,10 @@ void EditorInterface::edit_resource(const Ref<Resource> &p_resource) {
 	EditorNode::get_singleton()->edit_resource(p_resource);
 	EditorNode::get_singleton()->edit_resource(p_resource);
 }
 }
 
 
+void EditorInterface::edit_node(Node *p_node) {
+	EditorNode::get_singleton()->edit_node(p_node);
+}
+
 void EditorInterface::open_scene_from_path(const String &scene_path) {
 void EditorInterface::open_scene_from_path(const String &scene_path) {
 
 
 	if (EditorNode::get_singleton()->is_changing_scene()) {
 	if (EditorNode::get_singleton()->is_changing_scene()) {
@@ -322,6 +326,7 @@ void EditorInterface::_bind_methods() {
 	ClassDB::bind_method(D_METHOD("get_base_control"), &EditorInterface::get_base_control);
 	ClassDB::bind_method(D_METHOD("get_base_control"), &EditorInterface::get_base_control);
 	ClassDB::bind_method(D_METHOD("get_editor_scale"), &EditorInterface::get_editor_scale);
 	ClassDB::bind_method(D_METHOD("get_editor_scale"), &EditorInterface::get_editor_scale);
 	ClassDB::bind_method(D_METHOD("edit_resource", "resource"), &EditorInterface::edit_resource);
 	ClassDB::bind_method(D_METHOD("edit_resource", "resource"), &EditorInterface::edit_resource);
+	ClassDB::bind_method(D_METHOD("edit_node", "node"), &EditorInterface::edit_node);
 	ClassDB::bind_method(D_METHOD("open_scene_from_path", "scene_filepath"), &EditorInterface::open_scene_from_path);
 	ClassDB::bind_method(D_METHOD("open_scene_from_path", "scene_filepath"), &EditorInterface::open_scene_from_path);
 	ClassDB::bind_method(D_METHOD("reload_scene_from_path", "scene_filepath"), &EditorInterface::reload_scene_from_path);
 	ClassDB::bind_method(D_METHOD("reload_scene_from_path", "scene_filepath"), &EditorInterface::reload_scene_from_path);
 	ClassDB::bind_method(D_METHOD("play_main_scene"), &EditorInterface::play_main_scene);
 	ClassDB::bind_method(D_METHOD("play_main_scene"), &EditorInterface::play_main_scene);

+ 1 - 0
editor/editor_plugin.h

@@ -70,6 +70,7 @@ public:
 
 
 	Control *get_editor_viewport();
 	Control *get_editor_viewport();
 	void edit_resource(const Ref<Resource> &p_resource);
 	void edit_resource(const Ref<Resource> &p_resource);
+	void edit_node(Node *p_node);
 	void open_scene_from_path(const String &scene_path);
 	void open_scene_from_path(const String &scene_path);
 	void reload_scene_from_path(const String &scene_path);
 	void reload_scene_from_path(const String &scene_path);