From 9be47e3328b729e31b80ab9d23e5331fc7079bf8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fran=C3=A7ois?= Date: Mon, 9 Jan 2023 21:43:30 +0000 Subject: [PATCH] Fix overflow scaling for images (#7142) # Objective - Fixes #4057 - Do not multiply position by scale factor --- crates/bevy_ui/src/render/mod.rs | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/crates/bevy_ui/src/render/mod.rs b/crates/bevy_ui/src/render/mod.rs index 595896c1fd..0a6d93285a 100644 --- a/crates/bevy_ui/src/render/mod.rs +++ b/crates/bevy_ui/src/render/mod.rs @@ -176,7 +176,6 @@ pub struct ExtractedUiNode { pub clip: Option, pub flip_x: bool, pub flip_y: bool, - pub scale_factor: f32, } #[derive(Resource, Default)] @@ -188,7 +187,6 @@ pub fn extract_uinodes( mut extracted_uinodes: ResMut, images: Extract>>, ui_stack: Extract>, - windows: Extract>, uinode_query: Extract< Query<( &Node, @@ -200,7 +198,6 @@ pub fn extract_uinodes( )>, >, ) { - let scale_factor = windows.scale_factor(WindowId::primary()) as f32; extracted_uinodes.uinodes.clear(); for (stack_index, entity) in ui_stack.uinodes.iter().enumerate() { if let Ok((uinode, transform, color, maybe_image, visibility, clip)) = @@ -236,7 +233,6 @@ pub fn extract_uinodes( clip: clip.map(|clip| clip.clip), flip_x, flip_y, - scale_factor, }); } } @@ -364,7 +360,6 @@ pub fn extract_text_uinodes( clip: clip.map(|clip| clip.clip), flip_x: false, flip_y: false, - scale_factor, }); } } @@ -500,20 +495,20 @@ pub fn prepare_uinodes( let atlas_extent = extracted_uinode.atlas_size.unwrap_or(uinode_rect.max); let mut uvs = [ Vec2::new( - uinode_rect.min.x + positions_diff[0].x * extracted_uinode.scale_factor, - uinode_rect.min.y + positions_diff[0].y * extracted_uinode.scale_factor, + uinode_rect.min.x + positions_diff[0].x, + uinode_rect.min.y + positions_diff[0].y, ), Vec2::new( - uinode_rect.max.x + positions_diff[1].x * extracted_uinode.scale_factor, - uinode_rect.min.y + positions_diff[1].y * extracted_uinode.scale_factor, + uinode_rect.max.x + positions_diff[1].x, + uinode_rect.min.y + positions_diff[1].y, ), Vec2::new( - uinode_rect.max.x + positions_diff[2].x * extracted_uinode.scale_factor, - uinode_rect.max.y + positions_diff[2].y * extracted_uinode.scale_factor, + uinode_rect.max.x + positions_diff[2].x, + uinode_rect.max.y + positions_diff[2].y, ), Vec2::new( - uinode_rect.min.x + positions_diff[3].x * extracted_uinode.scale_factor, - uinode_rect.max.y + positions_diff[3].y * extracted_uinode.scale_factor, + uinode_rect.min.x + positions_diff[3].x, + uinode_rect.max.y + positions_diff[3].y, ), ] .map(|pos| pos / atlas_extent);