Clear only owners that are no longer in the same tree

(cherry picked from commit 2db9397fb9)
This commit is contained in:
Pedro J. Estébanez 2022-01-05 14:00:04 +01:00 committed by Rémi Verschelde
parent 716580bd18
commit 571e05d3d3
No known key found for this signature in database
GPG Key ID: C3336907360768E1

View File

@ -234,15 +234,32 @@ void Node::_propagate_enter_tree() {
}
void Node::_propagate_after_exit_tree() {
// Clear owner if it was not part of the pruned branch
if (data.owner) {
data.owner->data.owned.erase(data.OW);
data.owner = nullptr;
bool found = false;
Node *parent = data.parent;
while (parent) {
if (parent == data.owner) {
found = true;
break;
}
parent = parent->data.parent;
}
if (!found) {
data.owner->data.owned.erase(data.OW);
data.owner = nullptr;
}
}
data.blocked++;
for (int i = 0; i < data.children.size(); i++) {
data.children[i]->_propagate_after_exit_tree();
}
data.blocked--;
emit_signal(SceneStringNames::get_singleton()->tree_exited);
}