Skip to content

Commit

Permalink
Fix node internal/non-internal processing order
Browse files Browse the repository at this point in the history
Bonus:
Fix issues in group-processing related setters
  • Loading branch information
RandomShaper committed Jun 27, 2023
1 parent 950f4c3 commit 70ca659
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 12 deletions.
14 changes: 8 additions & 6 deletions scene/main/node.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -933,9 +933,11 @@ void Node::set_process_thread_group_order(int p_order) {
if (data.process_thread_group_order == p_order) {
return;
}
// Make sure we are in SceneTree and an actual process owner

data.process_thread_group_order = p_order;

// Not yet in the tree (or not a group owner, in whose case this is pointless but harmless); trivial update.
if (!is_inside_tree() || data.process_thread_group_owner != this) {
data.process_thread_group_order = p_order;
return;
}

Expand All @@ -951,8 +953,8 @@ void Node::set_process_priority(int p_priority) {
if (data.process_priority == p_priority) {
return;
}
// Make sure we are in SceneTree and an actual process owner
if (!is_inside_tree()) {
// Not yet in the tree; trivial update.
data.process_priority = p_priority;
return;
}
Expand All @@ -973,8 +975,8 @@ void Node::set_physics_process_priority(int p_priority) {
if (data.physics_process_priority == p_priority) {
return;
}
// Make sure we are in SceneTree and an actual physics_process owner
if (!is_inside_tree()) {
// Not yet in the tree; trivial update.
data.physics_process_priority = p_priority;
return;
}
Expand All @@ -997,11 +999,11 @@ void Node::set_process_thread_group(ProcessThreadGroup p_mode) {
}

if (!is_inside_tree()) {
// Not yet in the tree; trivial update.
data.process_thread_group = p_mode;
return;
}

// Mode changed, must update everything.
_remove_tree_from_process_thread_group();
if (data.process_thread_group != PROCESS_THREAD_GROUP_INHERIT) {
_remove_process_group();
Expand Down Expand Up @@ -1031,7 +1033,7 @@ Node::ProcessThreadGroup Node::get_process_thread_group() const {

void Node::set_process_thread_messages(BitField<ProcessThreadMessages> p_flags) {
ERR_THREAD_GUARD
if (data.process_thread_group_order == p_flags) {
if (data.process_thread_messages == p_flags) {
return;
}

Expand Down
12 changes: 6 additions & 6 deletions scene/main/scene_tree.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -932,19 +932,19 @@ void SceneTree::_process_group(ProcessGroup *p_group, bool p_physics) {
}

if (p_physics) {
if (n->is_physics_processing()) {
n->notification(Node::NOTIFICATION_PHYSICS_PROCESS);
}
if (n->is_physics_processing_internal()) {
n->notification(Node::NOTIFICATION_INTERNAL_PHYSICS_PROCESS);
}
} else {
if (n->is_processing()) {
n->notification(Node::NOTIFICATION_PROCESS);
if (n->is_physics_processing()) {
n->notification(Node::NOTIFICATION_PHYSICS_PROCESS);
}
} else {
if (n->is_processing_internal()) {
n->notification(Node::NOTIFICATION_INTERNAL_PROCESS);
}
if (n->is_processing()) {
n->notification(Node::NOTIFICATION_PROCESS);
}
}
}

Expand Down

0 comments on commit 70ca659

Please sign in to comment.