From 3ee34348c28791379c357fc33a8f222405c8ccdc Mon Sep 17 00:00:00 2001 From: awtterpip Date: Fri, 10 Nov 2023 18:11:39 -0600 Subject: [PATCH 1/3] ui scale fix --- backends/bevy_picking_ui/src/lib.rs | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/backends/bevy_picking_ui/src/lib.rs b/backends/bevy_picking_ui/src/lib.rs index 36da521d..7aebf5ae 100644 --- a/backends/bevy_picking_ui/src/lib.rs +++ b/backends/bevy_picking_ui/src/lib.rs @@ -31,6 +31,7 @@ use bevy_ui::{prelude::*, RelativeCursorPosition, UiStack}; use bevy_window::PrimaryWindow; use bevy_picking_core::backend::prelude::*; +use bevy_picking_core::pointer::Location; /// Commonly used imports for the [`bevy_picking_ui`](crate) crate. pub mod prelude { @@ -68,9 +69,11 @@ pub fn ui_picking( cameras: Query<(Entity, &Camera, Option<&UiCameraConfig>)>, primary_window: Query>, ui_stack: Res, + ui_scale: Option>, mut node_query: Query, mut output: EventWriter, ) { + let ui_scale = ui_scale.map(|f| f.0).unwrap_or(1.0) as f32; for (pointer, location) in pointers.iter().filter_map(|(pointer, pointer_location)| { pointer_location .location() @@ -83,7 +86,16 @@ pub fn ui_picking( } false }) - .map(|loc| (pointer, loc)) + .cloned() + .map(|loc| { + ( + pointer, + Location { + position: loc.position / ui_scale, + ..loc + }, + ) + }) }) { let window_entity = primary_window.single(); From 9dd9c77d0ba29dfc71c05636b23028174363f524 Mon Sep 17 00:00:00 2001 From: Aevyrie Date: Fri, 23 Feb 2024 12:38:02 -0800 Subject: [PATCH 2/3] Update changelog --- CHANGELOG.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 385a284c..9616757a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,7 @@ +# UNRELEASED + +- Added: support for `bevy_ui` `UiScale`. + # 0.17.0 - Update for bevy 0.12 From 3d6b0e6768159acac39ed054912059276be5e81d Mon Sep 17 00:00:00 2001 From: Aevyrie Date: Fri, 23 Feb 2024 12:42:07 -0800 Subject: [PATCH 3/3] Fix debug ui not being scale aware and add test to example --- examples/bevy_ui.rs | 1 + src/debug/mod.rs | 5 +++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/bevy_ui.rs b/examples/bevy_ui.rs index c2d5a5b9..6dd7a121 100644 --- a/examples/bevy_ui.rs +++ b/examples/bevy_ui.rs @@ -9,6 +9,7 @@ fn main() { .add_plugins(DefaultPickingPlugins) .add_systems(Startup, (setup, setup_3d)) .add_systems(Update, update_button_colors) + .insert_resource(UiScale(1.5)) .run(); } diff --git a/src/debug/mod.rs b/src/debug/mod.rs index 82e72b44..d4ccd922 100644 --- a/src/debug/mod.rs +++ b/src/debug/mod.rs @@ -355,6 +355,7 @@ impl Debug for DebugName { pub fn debug_draw( mut commands: Commands, pointers: Query<(Entity, &pointer::PointerId, &PointerDebug)>, + scale: Res, ) { use bevy_text::prelude::*; use bevy_ui::prelude::*; @@ -377,8 +378,8 @@ pub fn debug_draw( ), style: Style { position_type: PositionType::Absolute, - left: Val::Px(location.position.x + 5.0), - top: Val::Px(location.position.y + 5.0), + left: Val::Px(location.position.x + 5.0) / scale.0 as f32, + top: Val::Px(location.position.y + 5.0) / scale.0 as f32, ..Default::default() }, ..Default::default()