mirror of
https://github.com/godotengine/godot.git
synced 2025-10-19 16:03:29 +00:00
Merge pull request #110571 from WhalesState/get-children
Improve `Node::get_children` performance.
This commit is contained in:
commit
89c51cb183
1 changed files with 22 additions and 6 deletions
|
@ -1814,14 +1814,30 @@ Node *Node::get_child(int p_index, bool p_include_internal) const {
|
|||
|
||||
TypedArray<Node> Node::get_children(bool p_include_internal) const {
|
||||
ERR_THREAD_GUARD_V(TypedArray<Node>());
|
||||
TypedArray<Node> arr;
|
||||
int cc = get_child_count(p_include_internal);
|
||||
arr.resize(cc);
|
||||
for (int i = 0; i < cc; i++) {
|
||||
arr[i] = get_child(i, p_include_internal);
|
||||
_update_children_cache();
|
||||
|
||||
TypedArray<Node> children;
|
||||
|
||||
if (p_include_internal) {
|
||||
children.resize(data.children_cache.size());
|
||||
|
||||
Array::Iterator itr = children.begin();
|
||||
for (const Node *child : data.children_cache) {
|
||||
*itr = child;
|
||||
++itr;
|
||||
}
|
||||
} else {
|
||||
const int size = data.children_cache.size() - data.internal_children_back_count_cache;
|
||||
children.resize(size - data.internal_children_front_count_cache);
|
||||
|
||||
Array::Iterator itr = children.begin();
|
||||
for (int i = data.internal_children_front_count_cache; i < size; i++) {
|
||||
*itr = data.children_cache[i];
|
||||
++itr;
|
||||
}
|
||||
}
|
||||
|
||||
return arr;
|
||||
return children;
|
||||
}
|
||||
|
||||
Node *Node::_get_child_by_name(const StringName &p_name) const {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue