mirror of
https://github.com/godotengine/godot.git
synced 2024-11-26 14:13:10 +00:00
Clear only owners that are no longer in the same tree
(cherry picked from commit 2db9397fb9
)
This commit is contained in:
parent
716580bd18
commit
571e05d3d3
@ -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);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user