summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/classes/Node.xml1
-rw-r--r--scene/main/node.cpp3
2 files changed, 4 insertions, 0 deletions
diff --git a/doc/classes/Node.xml b/doc/classes/Node.xml
index eeb8dc072c..b342fc0813 100644
--- a/doc/classes/Node.xml
+++ b/doc/classes/Node.xml
@@ -215,6 +215,7 @@
</argument>
<description>
Returns a child node by its index (see [method get_child_count]). This method is often used for iterating all children of a node.
+ Negative indices access the children from the last one.
To access a child node via its name, use [method get_node].
</description>
</method>
diff --git a/scene/main/node.cpp b/scene/main/node.cpp
index 653eb698d4..6b304c03d2 100644
--- a/scene/main/node.cpp
+++ b/scene/main/node.cpp
@@ -1327,6 +1327,9 @@ int Node::get_child_count() const {
}
Node *Node::get_child(int p_index) const {
+ if (p_index < 0) {
+ p_index += data.children.size();
+ }
ERR_FAIL_INDEX_V(p_index, data.children.size(), nullptr);
return data.children[p_index];