Skip to content

Commit

Permalink
Fix overflow scaling for images (bevyengine#7142)
Browse files Browse the repository at this point in the history
# Objective

- Fixes bevyengine#4057 
- Do not multiply position by scale factor
  • Loading branch information
mockersf authored and ItsDoot committed Feb 1, 2023
1 parent 7e8623b commit b12c4ad
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions crates/bevy_ui/src/render/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,6 @@ pub struct ExtractedUiNode {
pub clip: Option<Rect>,
pub flip_x: bool,
pub flip_y: bool,
pub scale_factor: f32,
}

#[derive(Resource, Default)]
Expand All @@ -188,7 +187,6 @@ pub fn extract_uinodes(
mut extracted_uinodes: ResMut<ExtractedUiNodes>,
images: Extract<Res<Assets<Image>>>,
ui_stack: Extract<Res<UiStack>>,
windows: Extract<Res<Windows>>,
uinode_query: Extract<
Query<(
&Node,
Expand All @@ -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)) =
Expand Down Expand Up @@ -236,7 +233,6 @@ pub fn extract_uinodes(
clip: clip.map(|clip| clip.clip),
flip_x,
flip_y,
scale_factor,
});
}
}
Expand Down Expand Up @@ -364,7 +360,6 @@ pub fn extract_text_uinodes(
clip: clip.map(|clip| clip.clip),
flip_x: false,
flip_y: false,
scale_factor,
});
}
}
Expand Down Expand Up @@ -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);
Expand Down

0 comments on commit b12c4ad

Please sign in to comment.