Fix node internal/non-internal processing order
Bonus: Fix issues in group-processing related setters
This commit is contained in:
parent
950f4c3b41
commit
70ca659143
@ -933,9 +933,11 @@ void Node::set_process_thread_group_order(int p_order) {
|
|||||||
if (data.process_thread_group_order == p_order) {
|
if (data.process_thread_group_order == p_order) {
|
||||||
return;
|
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) {
|
if (!is_inside_tree() || data.process_thread_group_owner != this) {
|
||||||
data.process_thread_group_order = p_order;
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -951,8 +953,8 @@ void Node::set_process_priority(int p_priority) {
|
|||||||
if (data.process_priority == p_priority) {
|
if (data.process_priority == p_priority) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make sure we are in SceneTree and an actual process owner
|
|
||||||
if (!is_inside_tree()) {
|
if (!is_inside_tree()) {
|
||||||
|
// Not yet in the tree; trivial update.
|
||||||
data.process_priority = p_priority;
|
data.process_priority = p_priority;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -973,8 +975,8 @@ void Node::set_physics_process_priority(int p_priority) {
|
|||||||
if (data.physics_process_priority == p_priority) {
|
if (data.physics_process_priority == p_priority) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// Make sure we are in SceneTree and an actual physics_process owner
|
|
||||||
if (!is_inside_tree()) {
|
if (!is_inside_tree()) {
|
||||||
|
// Not yet in the tree; trivial update.
|
||||||
data.physics_process_priority = p_priority;
|
data.physics_process_priority = p_priority;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -997,11 +999,11 @@ void Node::set_process_thread_group(ProcessThreadGroup p_mode) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!is_inside_tree()) {
|
if (!is_inside_tree()) {
|
||||||
|
// Not yet in the tree; trivial update.
|
||||||
data.process_thread_group = p_mode;
|
data.process_thread_group = p_mode;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mode changed, must update everything.
|
|
||||||
_remove_tree_from_process_thread_group();
|
_remove_tree_from_process_thread_group();
|
||||||
if (data.process_thread_group != PROCESS_THREAD_GROUP_INHERIT) {
|
if (data.process_thread_group != PROCESS_THREAD_GROUP_INHERIT) {
|
||||||
_remove_process_group();
|
_remove_process_group();
|
||||||
@ -1031,7 +1033,7 @@ Node::ProcessThreadGroup Node::get_process_thread_group() const {
|
|||||||
|
|
||||||
void Node::set_process_thread_messages(BitField<ProcessThreadMessages> p_flags) {
|
void Node::set_process_thread_messages(BitField<ProcessThreadMessages> p_flags) {
|
||||||
ERR_THREAD_GUARD
|
ERR_THREAD_GUARD
|
||||||
if (data.process_thread_group_order == p_flags) {
|
if (data.process_thread_messages == p_flags) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -932,19 +932,19 @@ void SceneTree::_process_group(ProcessGroup *p_group, bool p_physics) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (p_physics) {
|
if (p_physics) {
|
||||||
if (n->is_physics_processing()) {
|
|
||||||
n->notification(Node::NOTIFICATION_PHYSICS_PROCESS);
|
|
||||||
}
|
|
||||||
if (n->is_physics_processing_internal()) {
|
if (n->is_physics_processing_internal()) {
|
||||||
n->notification(Node::NOTIFICATION_INTERNAL_PHYSICS_PROCESS);
|
n->notification(Node::NOTIFICATION_INTERNAL_PHYSICS_PROCESS);
|
||||||
}
|
}
|
||||||
} else {
|
if (n->is_physics_processing()) {
|
||||||
if (n->is_processing()) {
|
n->notification(Node::NOTIFICATION_PHYSICS_PROCESS);
|
||||||
n->notification(Node::NOTIFICATION_PROCESS);
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
if (n->is_processing_internal()) {
|
if (n->is_processing_internal()) {
|
||||||
n->notification(Node::NOTIFICATION_INTERNAL_PROCESS);
|
n->notification(Node::NOTIFICATION_INTERNAL_PROCESS);
|
||||||
}
|
}
|
||||||
|
if (n->is_processing()) {
|
||||||
|
n->notification(Node::NOTIFICATION_PROCESS);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user