Merge pull request #75459 from kleonc/node-fix-find-children
Fix recursive `Node.find_children`
This commit is contained in:
@@ -1665,25 +1665,19 @@ TypedArray<Node> Node::find_children(const String &p_pattern, const String &p_ty
|
||||
continue;
|
||||
}
|
||||
|
||||
if (!p_pattern.is_empty()) {
|
||||
if (!cptr[i]->data.name.operator String().match(p_pattern)) {
|
||||
continue;
|
||||
} else if (p_type.is_empty()) {
|
||||
if (p_pattern.is_empty() || cptr[i]->data.name.operator String().match(p_pattern)) {
|
||||
if (p_type.is_empty() || cptr[i]->is_class(p_type)) {
|
||||
ret.append(cptr[i]);
|
||||
}
|
||||
}
|
||||
} else if (cptr[i]->get_script_instance()) {
|
||||
Ref<Script> scr = cptr[i]->get_script_instance()->get_script();
|
||||
while (scr.is_valid()) {
|
||||
if ((ScriptServer::is_global_class(p_type) && ScriptServer::get_global_class_path(p_type) == scr->get_path()) || p_type == scr->get_path()) {
|
||||
ret.append(cptr[i]);
|
||||
break;
|
||||
}
|
||||
|
||||
if (cptr[i]->is_class(p_type)) {
|
||||
ret.append(cptr[i]);
|
||||
} else if (cptr[i]->get_script_instance()) {
|
||||
Ref<Script> scr = cptr[i]->get_script_instance()->get_script();
|
||||
while (scr.is_valid()) {
|
||||
if ((ScriptServer::is_global_class(p_type) && ScriptServer::get_global_class_path(p_type) == scr->get_path()) || p_type == scr->get_path()) {
|
||||
ret.append(cptr[i]);
|
||||
break;
|
||||
scr = scr->get_base_script();
|
||||
}
|
||||
|
||||
scr = scr->get_base_script();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user