You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-17 14:11:06 +00:00
Merge pull request #41437 from KoBeWi/put_it_here
Allow to create a node at specific position
This commit is contained in:
@@ -219,6 +219,9 @@ void SceneTreeDock::_perform_instance_scenes(const Vector<String> &p_files, Node
|
||||
|
||||
editor_data->get_undo_redo().commit_action();
|
||||
editor->push_item(instances[instances.size() - 1]);
|
||||
for (int i = 0; i < instances.size(); i++) {
|
||||
emit_signal("node_created", instances[i]);
|
||||
}
|
||||
}
|
||||
|
||||
void SceneTreeDock::_replace_with_branch_scene(const String &p_file, Node *base) {
|
||||
@@ -347,6 +350,11 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
break;
|
||||
}
|
||||
|
||||
if (reset_create_dialog) {
|
||||
create_dialog->set_base_type("Node");
|
||||
reset_create_dialog = false;
|
||||
}
|
||||
|
||||
// Prefer nodes that inherit from the current scene root.
|
||||
Node *current_edited_scene_root = EditorNode::get_singleton()->get_edited_scene();
|
||||
if (current_edited_scene_root) {
|
||||
@@ -367,6 +375,9 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
}
|
||||
|
||||
create_dialog->popup_create(true);
|
||||
if (!p_confirm_override) {
|
||||
emit_signal("add_node_used");
|
||||
}
|
||||
} break;
|
||||
case TOOL_INSTANCE: {
|
||||
if (!profile_allow_editing) {
|
||||
@@ -381,7 +392,9 @@ void SceneTreeDock::_tool_selected(int p_tool, bool p_confirm_override) {
|
||||
|
||||
quick_open->popup_dialog("PackedScene", true);
|
||||
quick_open->set_title(TTR("Instance Child Scene"));
|
||||
|
||||
if (!p_confirm_override) {
|
||||
emit_signal("add_node_used");
|
||||
}
|
||||
} break;
|
||||
case TOOL_EXPAND_COLLAPSE: {
|
||||
if (!scene_tree->get_selected()) {
|
||||
@@ -2101,6 +2114,8 @@ void SceneTreeDock::_do_create(Node *p_parent) {
|
||||
}
|
||||
ct->set_size(ms);
|
||||
}
|
||||
|
||||
emit_signal("node_created", c);
|
||||
}
|
||||
|
||||
void SceneTreeDock::_create() {
|
||||
@@ -2790,6 +2805,16 @@ void SceneTreeDock::open_script_dialog(Node *p_for_node, bool p_extend) {
|
||||
}
|
||||
}
|
||||
|
||||
void SceneTreeDock::open_add_child_dialog() {
|
||||
create_dialog->set_base_type("CanvasItem");
|
||||
_tool_selected(TOOL_NEW, true);
|
||||
reset_create_dialog = true;
|
||||
}
|
||||
|
||||
void SceneTreeDock::open_instance_child_dialog() {
|
||||
_tool_selected(TOOL_INSTANCE, true);
|
||||
}
|
||||
|
||||
void SceneTreeDock::add_remote_tree_editor(Control *p_remote) {
|
||||
ERR_FAIL_COND(remote_tree != nullptr);
|
||||
add_child(p_remote);
|
||||
@@ -2989,6 +3014,8 @@ void SceneTreeDock::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("replace_node"), &SceneTreeDock::replace_node);
|
||||
|
||||
ADD_SIGNAL(MethodInfo("remote_tree_selected"));
|
||||
ADD_SIGNAL(MethodInfo("add_node_used"));
|
||||
ADD_SIGNAL(MethodInfo("node_created", PropertyInfo(Variant::OBJECT, "node", PROPERTY_HINT_RESOURCE_TYPE, "Node")));
|
||||
}
|
||||
|
||||
SceneTreeDock::SceneTreeDock(EditorNode *p_editor, Node *p_scene_root, EditorSelection *p_editor_selection, EditorData &p_editor_data) {
|
||||
|
||||
Reference in New Issue
Block a user