From 728191d847b7742a3ed03eed1a9543463a5421a2 Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Wed, 6 Nov 2024 16:22:38 +0000 Subject: [PATCH 1/5] The `WindowScaleFactorChanged` event never seems to fire. In `update_text2d_layout` store the previous scale factor in a `Local` instead and check against the current scale factor to detect changes. --- crates/bevy_text/src/text2d.rs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index 509108cb501e2..b9c6a628ad294 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -235,12 +235,12 @@ pub fn extract_text2d_sprite( /// It does not modify or observe existing ones. #[allow(clippy::too_many_arguments)] pub fn update_text2d_layout( + mut last_scale_factor: Local, // Text items which should be reprocessed again, generally when the font hasn't loaded yet. mut queue: Local>, mut textures: ResMut>, fonts: Res>, windows: Query<&Window, With>, - mut scale_factor_changed: EventReader, mut texture_atlases: ResMut>, mut font_atlas_sets: ResMut, mut text_pipeline: ResMut, @@ -255,9 +255,6 @@ pub fn update_text2d_layout( mut font_system: ResMut, mut swash_cache: ResMut, ) { - // We need to consume the entire iterator, hence `last` - let factor_changed = scale_factor_changed.read().last().is_some(); - // TODO: Support window-independent scaling: https://github.com/bevyengine/bevy/issues/5621 let scale_factor = windows .get_single() @@ -266,6 +263,9 @@ pub fn update_text2d_layout( let inverse_scale_factor = scale_factor.recip(); + let factor_changed = last_scale_factor != scale_factor; + *last_scale_factor = scale_factor; + for (entity, block, bounds, text_layout_info, mut computed) in &mut text_query { if factor_changed || computed.needs_rerender() From 8d29750aa4eca6c2e054a04f584148b17f80c644 Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Wed, 6 Nov 2024 18:32:40 +0000 Subject: [PATCH 2/5] deref local --- crates/bevy_text/src/text2d.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index b9c6a628ad294..a76edd0e7876f 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -263,7 +263,7 @@ pub fn update_text2d_layout( let inverse_scale_factor = scale_factor.recip(); - let factor_changed = last_scale_factor != scale_factor; + let factor_changed = *last_scale_factor != scale_factor; *last_scale_factor = scale_factor; for (entity, block, bounds, text_layout_info, mut computed) in &mut text_query { From 960dea91b415b6c769243421970741eb0c2c597d Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Wed, 6 Nov 2024 18:46:45 +0000 Subject: [PATCH 3/5] Removed unused imports. --- crates/bevy_text/src/text2d.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index a76edd0e7876f..6947f1f613b6b 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -11,7 +11,6 @@ use bevy_ecs::component::Component; use bevy_ecs::{ change_detection::{DetectChanges, Ref}, entity::Entity, - event::EventReader, prelude::{ReflectComponent, With}, query::{Changed, Without}, system::{Commands, Local, Query, Res, ResMut}, @@ -30,7 +29,7 @@ use bevy_sprite::{Anchor, ExtractedSprite, ExtractedSprites, SpriteSource, Textu use bevy_transform::components::Transform; use bevy_transform::prelude::GlobalTransform; use bevy_utils::HashSet; -use bevy_window::{PrimaryWindow, Window, WindowScaleFactorChanged}; +use bevy_window::{PrimaryWindow, Window; /// [`Text2dBundle`] was removed in favor of required components. /// The core component is now [`Text2d`] which can contain a single text segment. From a778d132fb8d6631e0d7d2b2afb8d6f2a0135454 Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Wed, 6 Nov 2024 21:20:50 +0000 Subject: [PATCH 4/5] Replaced bracket --- crates/bevy_text/src/text2d.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index 6947f1f613b6b..131f2be138518 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -29,7 +29,7 @@ use bevy_sprite::{Anchor, ExtractedSprite, ExtractedSprites, SpriteSource, Textu use bevy_transform::components::Transform; use bevy_transform::prelude::GlobalTransform; use bevy_utils::HashSet; -use bevy_window::{PrimaryWindow, Window; +use bevy_window::{PrimaryWindow, Window}; /// [`Text2dBundle`] was removed in favor of required components. /// The core component is now [`Text2d`] which can contain a single text segment. From ebe7d8d1352bdbcb12551ca7f420c0e7a0864c32 Mon Sep 17 00:00:00 2001 From: ickshonpe Date: Wed, 6 Nov 2024 21:28:11 +0000 Subject: [PATCH 5/5] Fixed tests --- crates/bevy_text/src/text2d.rs | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/crates/bevy_text/src/text2d.rs b/crates/bevy_text/src/text2d.rs index 131f2be138518..04789b0fcefdc 100644 --- a/crates/bevy_text/src/text2d.rs +++ b/crates/bevy_text/src/text2d.rs @@ -358,7 +358,7 @@ mod tests { use bevy_app::{App, Update}; use bevy_asset::{load_internal_binary_asset, Handle}; - use bevy_ecs::{event::Events, schedule::IntoSystemConfigs}; + use bevy_ecs::schedule::IntoSystemConfigs; use crate::{detect_text_needs_rerender, TextIterScratch}; @@ -373,7 +373,6 @@ mod tests { .init_resource::>() .init_resource::>() .init_resource::() - .init_resource::>() .init_resource::() .init_resource::() .init_resource::()