diff options
Diffstat (limited to 'modules/multiplayer/editor/editor_network_profiler.cpp')
-rw-r--r-- | modules/multiplayer/editor/editor_network_profiler.cpp | 49 |
1 files changed, 33 insertions, 16 deletions
diff --git a/modules/multiplayer/editor/editor_network_profiler.cpp b/modules/multiplayer/editor/editor_network_profiler.cpp index f8e75d5ef5..c2cb0a3d1a 100644 --- a/modules/multiplayer/editor/editor_network_profiler.cpp +++ b/modules/multiplayer/editor/editor_network_profiler.cpp @@ -41,25 +41,42 @@ void EditorNetworkProfiler::_bind_methods() { void EditorNetworkProfiler::_notification(int p_what) { switch (p_what) { - case NOTIFICATION_ENTER_TREE: case NOTIFICATION_THEME_CHANGED: { - node_icon = get_theme_icon(SNAME("Node"), SNAME("EditorIcons")); if (activate->is_pressed()) { - activate->set_icon(get_theme_icon(SNAME("Stop"), SNAME("EditorIcons"))); + activate->set_icon(theme_cache.stop_icon); } else { - activate->set_icon(get_theme_icon(SNAME("Play"), SNAME("EditorIcons"))); + activate->set_icon(theme_cache.play_icon); } - clear_button->set_icon(get_theme_icon(SNAME("Clear"), SNAME("EditorIcons"))); - incoming_bandwidth_text->set_right_icon(get_theme_icon(SNAME("ArrowDown"), SNAME("EditorIcons"))); - outgoing_bandwidth_text->set_right_icon(get_theme_icon(SNAME("ArrowUp"), SNAME("EditorIcons"))); + clear_button->set_icon(theme_cache.clear_icon); + + incoming_bandwidth_text->set_right_icon(theme_cache.incoming_bandwidth_icon); + outgoing_bandwidth_text->set_right_icon(theme_cache.outgoing_bandwidth_icon); // This needs to be done here to set the faded color when the profiler is first opened - incoming_bandwidth_text->add_theme_color_override("font_uneditable_color", get_theme_color(SNAME("font_color"), SNAME("Editor")) * Color(1, 1, 1, 0.5)); - outgoing_bandwidth_text->add_theme_color_override("font_uneditable_color", get_theme_color(SNAME("font_color"), SNAME("Editor")) * Color(1, 1, 1, 0.5)); + incoming_bandwidth_text->add_theme_color_override("font_uneditable_color", theme_cache.incoming_bandwidth_color * Color(1, 1, 1, 0.5)); + outgoing_bandwidth_text->add_theme_color_override("font_uneditable_color", theme_cache.outgoing_bandwidth_color * Color(1, 1, 1, 0.5)); } break; } } +void EditorNetworkProfiler::_update_theme_item_cache() { + VBoxContainer::_update_theme_item_cache(); + + theme_cache.node_icon = get_theme_icon(SNAME("Node"), SNAME("EditorIcons")); + theme_cache.stop_icon = get_theme_icon(SNAME("Stop"), SNAME("EditorIcons")); + theme_cache.play_icon = get_theme_icon(SNAME("Play"), SNAME("EditorIcons")); + theme_cache.clear_icon = get_theme_icon(SNAME("Clear"), SNAME("EditorIcons")); + + theme_cache.multiplayer_synchronizer_icon = get_theme_icon("MultiplayerSynchronizer", SNAME("EditorIcons")); + theme_cache.instance_options_icon = get_theme_icon(SNAME("InstanceOptions"), SNAME("EditorIcons")); + + theme_cache.incoming_bandwidth_icon = get_theme_icon(SNAME("ArrowDown"), SNAME("EditorIcons")); + theme_cache.outgoing_bandwidth_icon = get_theme_icon(SNAME("ArrowUp"), SNAME("EditorIcons")); + + theme_cache.incoming_bandwidth_color = get_theme_color(SNAME("font_color"), SNAME("Editor")); + theme_cache.outgoing_bandwidth_color = get_theme_color(SNAME("font_color"), SNAME("Editor")); +} + void EditorNetworkProfiler::_refresh() { if (!dirty) { return; @@ -111,11 +128,11 @@ void EditorNetworkProfiler::refresh_replication_data() { const NodeInfo &cfg_info = node_data[E.value.config]; node->set_text(0, root_info.path.get_file()); - node->set_icon(0, has_theme_icon(root_info.type, SNAME("EditorIcons")) ? get_theme_icon(root_info.type, SNAME("EditorIcons")) : node_icon); + node->set_icon(0, has_theme_icon(root_info.type, SNAME("EditorIcons")) ? get_theme_icon(root_info.type, SNAME("EditorIcons")) : theme_cache.node_icon); node->set_tooltip_text(0, root_info.path); node->set_text(1, sync_info.path.get_file()); - node->set_icon(1, get_theme_icon("MultiplayerSynchronizer", SNAME("EditorIcons"))); + node->set_icon(1, theme_cache.multiplayer_synchronizer_icon); node->set_tooltip_text(1, sync_info.path); int cfg_idx = cfg_info.path.find("::"); @@ -123,7 +140,7 @@ void EditorNetworkProfiler::refresh_replication_data() { String res_idstr = cfg_info.path.substr(cfg_idx + 2).replace("SceneReplicationConfig_", ""); String scene_path = cfg_info.path.substr(0, cfg_idx); node->set_text(2, vformat("%s (%s)", res_idstr, scene_path.get_file())); - node->add_button(2, get_theme_icon(SNAME("InstanceOptions"), SNAME("EditorIcons"))); + node->add_button(2, theme_cache.instance_options_icon); node->set_tooltip_text(2, cfg_info.path); node->set_metadata(2, scene_path); } else { @@ -154,11 +171,11 @@ void EditorNetworkProfiler::add_node_data(const NodeInfo &p_info) { void EditorNetworkProfiler::_activate_pressed() { if (activate->is_pressed()) { refresh_timer->start(); - activate->set_icon(get_theme_icon(SNAME("Stop"), SNAME("EditorIcons"))); + activate->set_icon(theme_cache.stop_icon); activate->set_text(TTR("Stop")); } else { refresh_timer->stop(); - activate->set_icon(get_theme_icon(SNAME("Play"), SNAME("EditorIcons"))); + activate->set_icon(theme_cache.play_icon); activate->set_text(TTR("Start")); } emit_signal(SNAME("enable_profiling"), activate->is_pressed()); @@ -224,10 +241,10 @@ void EditorNetworkProfiler::set_bandwidth(int p_incoming, int p_outgoing) { // Make labels more prominent when the bandwidth is greater than 0 to attract user attention incoming_bandwidth_text->add_theme_color_override( "font_uneditable_color", - get_theme_color(SNAME("font_color"), SNAME("Editor")) * Color(1, 1, 1, p_incoming > 0 ? 1 : 0.5)); + theme_cache.incoming_bandwidth_color * Color(1, 1, 1, p_incoming > 0 ? 1 : 0.5)); outgoing_bandwidth_text->add_theme_color_override( "font_uneditable_color", - get_theme_color(SNAME("font_color"), SNAME("Editor")) * Color(1, 1, 1, p_outgoing > 0 ? 1 : 0.5)); + theme_cache.outgoing_bandwidth_color * Color(1, 1, 1, p_outgoing > 0 ? 1 : 0.5)); } bool EditorNetworkProfiler::is_profiling() { |