You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-08 12:40:44 +00:00
Refactor Process Mode
Implements https://github.com/godotengine/godot-proposals/issues/1835#issuecomment-727186192 * PauseMode is now ProcessMode, containing the following states: ``` PROCESS_MODE_INHERIT, // same as parent node PROCESS_MODE_NORMAL, // process only if not paused PROCESS_MODE_PAUSE_ONLY, // process only if paused PROCESS_MODE_ALWAYS, // process always PROCESS_MODE_DISABLED, // never process ``` * NOTIFICATION_PAUSED and NOTIFICATION_UNPAUSED are received effectively when the node is paused and unpaused (not any longer when pause mode is set in SceneTree). * Renamed some nodes that used ProcessMode/process_mode to specify a callback type to ProcessCallback to avoid clashes.
This commit is contained in:
@@ -236,6 +236,8 @@ bool SceneTreeEditor::_add_nodes(Node *p_node, TreeItem *p_parent, bool p_scroll
|
||||
item->set_text(0, node_name);
|
||||
item->set_selectable(0, marked_selectable);
|
||||
item->set_custom_color(0, get_theme_color("accent_color", "Editor"));
|
||||
} else if (!p_node->can_process()) {
|
||||
item->set_custom_color(0, get_theme_color("disabled_font_color", "Editor"));
|
||||
} else if (!marked_selectable && !marked_children_selectable) {
|
||||
Node *node = p_node;
|
||||
while (node) {
|
||||
@@ -585,6 +587,11 @@ void SceneTreeEditor::_test_update_tree() {
|
||||
tree_dirty = true;
|
||||
}
|
||||
|
||||
void SceneTreeEditor::_tree_process_mode_changed() {
|
||||
MessageQueue::get_singleton()->push_call(this, "_update_tree");
|
||||
tree_dirty = true;
|
||||
}
|
||||
|
||||
void SceneTreeEditor::_tree_changed() {
|
||||
if (EditorNode::get_singleton()->is_exiting()) {
|
||||
return; //speed up exit
|
||||
@@ -655,6 +662,7 @@ void SceneTreeEditor::_notification(int p_what) {
|
||||
switch (p_what) {
|
||||
case NOTIFICATION_ENTER_TREE: {
|
||||
get_tree()->connect("tree_changed", callable_mp(this, &SceneTreeEditor::_tree_changed));
|
||||
get_tree()->connect("tree_process_mode_changed", callable_mp(this, &SceneTreeEditor::_tree_process_mode_changed));
|
||||
get_tree()->connect("node_removed", callable_mp(this, &SceneTreeEditor::_node_removed));
|
||||
get_tree()->connect("node_renamed", callable_mp(this, &SceneTreeEditor::_node_renamed));
|
||||
get_tree()->connect("node_configuration_warning_changed", callable_mp(this, &SceneTreeEditor::_warning_changed));
|
||||
@@ -665,6 +673,7 @@ void SceneTreeEditor::_notification(int p_what) {
|
||||
} break;
|
||||
case NOTIFICATION_EXIT_TREE: {
|
||||
get_tree()->disconnect("tree_changed", callable_mp(this, &SceneTreeEditor::_tree_changed));
|
||||
get_tree()->disconnect("tree_process_mode_changed", callable_mp(this, &SceneTreeEditor::_tree_process_mode_changed));
|
||||
get_tree()->disconnect("node_removed", callable_mp(this, &SceneTreeEditor::_node_removed));
|
||||
get_tree()->disconnect("node_renamed", callable_mp(this, &SceneTreeEditor::_node_renamed));
|
||||
tree->disconnect("item_collapsed", callable_mp(this, &SceneTreeEditor::_cell_collapsed));
|
||||
|
||||
Reference in New Issue
Block a user