From be422d31e82919b9327d60c8647d715e5c0e44eb Mon Sep 17 00:00:00 2001 From: carrascomj Date: Thu, 16 Jan 2025 16:50:17 +0100 Subject: [PATCH] refactor: unify just_pressed mouse picking --- src/picking.rs | 35 ++++++++++++++--------------------- 1 file changed, 14 insertions(+), 21 deletions(-) diff --git a/src/picking.rs b/src/picking.rs index 94e9892..28c42ea 100644 --- a/src/picking.rs +++ b/src/picking.rs @@ -43,15 +43,25 @@ pub fn mouse_click_system( let Ok((_, win)) = windows.get_single() else { return; }; - if mouse_button_input.just_pressed(MouseButton::Middle) { - for (trans, mut drag) in drag_query.iter_mut() { - if let Some(world_pos) = get_pos(win, camera, camera_transform) { + let middle_click = mouse_button_input.just_pressed(MouseButton::Middle); + let right_click = mouse_button_input.just_pressed(MouseButton::Right); + if middle_click | right_click { + let scaling = + key_input.pressed(KeyCode::ShiftLeft) | key_input.pressed(KeyCode::ShiftRight); + if let Some(world_pos) = get_pos(win, camera, camera_transform) { + for (trans, mut drag) in drag_query.iter_mut() { if (world_pos - Vec2::new(trans.translation.x, trans.translation.y)) .length_squared() < 5000. { - drag.dragged = true; + if middle_click { + drag.dragged = true; // do not move more than one component at the same time + } else { + drag.scaling = scaling; + drag.rotating = !scaling; + } + break; } } @@ -63,23 +73,6 @@ pub fn mouse_click_system( drag.dragged = false; } } - if mouse_button_input.just_pressed(MouseButton::Right) { - let scaling = - key_input.pressed(KeyCode::ShiftLeft) | key_input.pressed(KeyCode::ShiftRight); - for (trans, mut drag) in drag_query.iter_mut() { - if let Some(world_pos) = get_pos(win, camera, camera_transform) { - if (world_pos - Vec2::new(trans.translation.x, trans.translation.y)) - .length_squared() - < 5000. - { - drag.scaling = scaling; - drag.rotating = !scaling; - // do not move more than one component at the same time - break; - } - } - } - } if mouse_button_input.just_released(MouseButton::Right) { for (_, mut drag) in drag_query.iter_mut() {