Ensure process notification is received only if really enabled, fixes #7894
(cherry picked from commit 15db793ef2
)
This commit is contained in:
parent
a93e28291f
commit
8ff42771a4
|
@ -238,7 +238,7 @@ void Node::_propagate_enter_tree() {
|
|||
|
||||
void Node::_propagate_exit_tree() {
|
||||
|
||||
//block while removing children
|
||||
//block while removing children
|
||||
|
||||
#ifdef DEBUG_ENABLED
|
||||
|
||||
|
@ -990,6 +990,17 @@ bool Node::can_call_rset(const StringName &p_property, int p_from) const {
|
|||
return false;
|
||||
}
|
||||
|
||||
bool Node::can_process_notification(int p_what) const {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_PHYSICS_PROCESS: return data.physics_process;
|
||||
case NOTIFICATION_PROCESS: return data.idle_process;
|
||||
case NOTIFICATION_INTERNAL_PROCESS: return data.idle_process_internal;
|
||||
case NOTIFICATION_INTERNAL_PHYSICS_PROCESS: return data.physics_process_internal;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool Node::can_process() const {
|
||||
|
||||
ERR_FAIL_COND_V(!is_inside_tree(), false);
|
||||
|
|
|
@ -355,6 +355,7 @@ public:
|
|||
void set_pause_mode(PauseMode p_mode);
|
||||
PauseMode get_pause_mode() const;
|
||||
bool can_process() const;
|
||||
bool can_process_notification(int p_what) const;
|
||||
|
||||
void request_ready();
|
||||
|
||||
|
|
|
@ -932,6 +932,8 @@ void SceneTree::_notify_group_pause(const StringName &p_group, int p_notificatio
|
|||
|
||||
if (!n->can_process())
|
||||
continue;
|
||||
if (!n->can_process_notification(p_notification))
|
||||
continue;
|
||||
|
||||
n->notification(p_notification);
|
||||
//ERR_FAIL_COND(node_count != g.nodes.size());
|
||||
|
|
Loading…
Reference in New Issue