summaryrefslogtreecommitdiff
path: root/scene/main/node.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'scene/main/node.cpp')
-rw-r--r--scene/main/node.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index da14fa1111..29925b62f5 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -749,6 +749,16 @@ void Node::add_child(Node *p_child, bool p_legible_unique_name) {
}
+void Node::add_child_below_node(Node *p_node, Node *p_child, bool p_legible_unique_name) {
+ add_child(p_child, p_legible_unique_name);
+
+ if (is_a_parent_of(p_node)) {
+ move_child(p_child, p_node->get_position_in_parent() + 1);
+ } else {
+ WARN_PRINTS("Cannot move under node " + p_node->get_name() + " as " + p_child->get_name() + " does not share a parent")
+ }
+}
+
void Node::_propagate_validate_owner() {
@@ -1234,7 +1244,19 @@ void Node::get_groups(List<GroupInfo> *p_groups) const {
}
+bool Node::has_persistent_groups() const {
+
+ const StringName *K=NULL;
+
+ while ((K=data.grouped.next(K))) {
+
+ if (data.grouped[*K].persistent)
+ return true;
+ }
+ return false;
+
+}
void Node::_print_tree(const Node *p_node) {
print_line(String(p_node->get_path_to(this)));
@@ -2010,8 +2032,27 @@ void Node::clear_internal_tree_resource_paths() {
}
+String Node::get_configuration_warning() const {
+
+ return String();
+}
+
+void Node::update_configuration_warning() {
+
+#ifdef TOOLS_ENABLED
+ if (!is_inside_tree())
+ return;
+ if (get_tree()->get_edited_scene_root() && (get_tree()->get_edited_scene_root()==this || get_tree()->get_edited_scene_root()->is_a_parent_of(this))) {
+ get_tree()->emit_signal(SceneStringNames::get_singleton()->node_configuration_warning_changed,this);
+ }
+#endif
+
+}
+
void Node::_bind_methods() {
+ ObjectTypeDB::bind_method(_MD("_add_child_below_node","node:Node","child_node:Node","legible_unique_name"),&Node::add_child_below_node,DEFVAL(false));
+
ObjectTypeDB::bind_method(_MD("set_name","name"),&Node::set_name);
ObjectTypeDB::bind_method(_MD("get_name"),&Node::get_name);
ObjectTypeDB::bind_method(_MD("add_child","node:Node","legible_unique_name"),&Node::add_child,DEFVAL(false));
@@ -2076,6 +2117,10 @@ void Node::_bind_methods() {
ObjectTypeDB::bind_method(_MD("get_viewport"),&Node::get_viewport);
ObjectTypeDB::bind_method(_MD("queue_free"),&Node::queue_delete);
+
+
+
+
#ifdef TOOLS_ENABLED
ObjectTypeDB::bind_method(_MD("_set_import_path","import_path"),&Node::set_import_path);
ObjectTypeDB::bind_method(_MD("_get_import_path"),&Node::get_import_path);