Fix cliippy

This commit is contained in:
Alex Mikhalev 2023-05-02 21:34:26 -07:00
parent 25c03beb2d
commit 50ab2d1976

View File

@ -2,6 +2,7 @@ use std::ops::{Deref, DerefMut};
use bevy_ecs::{ use bevy_ecs::{
prelude::*, prelude::*,
query::WorldQuery,
system::{Commands, IntoSystem, Query, ReadOnlySystem, Res, ResMut, System}, system::{Commands, IntoSystem, Query, ReadOnlySystem, Res, ResMut, System},
}; };
use eframe::{ use eframe::{
@ -17,12 +18,7 @@ mod relations;
fn main() { fn main() {
let options = eframe::NativeOptions::default(); let options = eframe::NativeOptions::default();
eframe::run_native( eframe::run_native("sketchrs", options, Box::new(|_cc| Box::<MyApp>::default())).unwrap();
"sketchrs",
options,
Box::new(|_cc| Box::new(MyApp::default())),
)
.unwrap();
} }
#[derive(Clone, Copy, PartialEq, Resource)] #[derive(Clone, Copy, PartialEq, Resource)]
@ -34,6 +30,7 @@ enum Tool {
AddRelation, AddRelation,
} }
#[allow(clippy::derivable_impls)]
impl Default for Tool { impl Default for Tool {
fn default() -> Self { fn default() -> Self {
Tool::Select Tool::Select
@ -113,7 +110,7 @@ fn update_hover_point(
points.for_each(|(id, point)| { points.for_each(|(id, point)| {
let hovered = if let Some(hover_pos) = response.hover_pos() { let hovered = if let Some(hover_pos) = response.hover_pos() {
let pos = point_pos.get(point); let pos = point_pos.get(point);
let center = to_screen.transform_pos(&*pos); let center = to_screen.transform_pos(&pos);
(hover_pos - center).length() < (POINT_RADIUS * 3.) (hover_pos - center).length() < (POINT_RADIUS * 3.)
} else { } else {
@ -147,7 +144,7 @@ fn update_hover_line(
let a = hover_pos - points[0]; let a = hover_pos - points[0];
let p = a.dot(b) / b.dot(b); let p = a.dot(b) / b.dot(b);
let perp = a - (p * b); let perp = a - (p * b);
((0.)..=(1.)).contains(&p) && perp.length() < 5.0 ((0.)..=1.).contains(&p) && perp.length() < 5.0
} else { } else {
false false
}; };
@ -230,7 +227,7 @@ fn move_tool(
if let Some((_, point)) = selected { if let Some((_, point)) = selected {
if response.drag_started() { if response.drag_started() {
let drag_point_pos = point_pos.get(point).unwrap(); let drag_point_pos = point_pos.get(point).unwrap();
drag_delta.0 = hover_pos - to_screen.transform_pos(&*drag_point_pos); drag_delta.0 = hover_pos - to_screen.transform_pos(&drag_point_pos);
} }
let move_to = to_screen.inverse_transform_to_point(hover_pos - drag_delta.0); let move_to = to_screen.inverse_transform_to_point(hover_pos - drag_delta.0);
point_pos.set(point, move_to).unwrap(); point_pos.set(point, move_to).unwrap();
@ -251,7 +248,7 @@ fn add_point_tool(
) { ) {
let hover_pos = response.hover_pos().unwrap(); let hover_pos = response.hover_pos().unwrap();
if response.clicked() { if response.clicked() {
add_point(&mut commands, hover_pos, &*to_screen); add_point(&mut commands, hover_pos, &to_screen);
} else { } else {
painter.circle_filled(hover_pos, POINT_RADIUS, Color32::WHITE); painter.circle_filled(hover_pos, POINT_RADIUS, Color32::WHITE);
} }
@ -275,7 +272,7 @@ fn add_line_tool(
(None, true) => { (None, true) => {
let point_id = match hovered.iter().next() { let point_id = match hovered.iter().next() {
Some(hovered) => hovered, Some(hovered) => hovered,
None => add_point(&mut commands, hover_pos, &*to_screen), None => add_point(&mut commands, hover_pos, &to_screen),
}; };
commands.entity(point_id).insert(Selected); commands.entity(point_id).insert(Selected);
} }
@ -294,7 +291,7 @@ fn add_line_tool(
let end_point = hovered let end_point = hovered
.iter() .iter()
.next() .next()
.unwrap_or_else(|| add_point(&mut commands, hover_pos, &*to_screen)); .unwrap_or_else(|| add_point(&mut commands, hover_pos, &to_screen));
let line = Line::new(start_point_id, end_point); let line = Line::new(start_point_id, end_point);
commands.spawn(line); commands.spawn(line);
@ -378,7 +375,7 @@ fn paint_points(
points.for_each(|(id, point)| { points.for_each(|(id, point)| {
let pos = point_pos.get(point); let pos = point_pos.get(point);
let center = to_screen.transform_pos(&*pos); let center = to_screen.transform_pos(&pos);
let color = color_for_var_status(pos.status); let color = color_for_var_status(pos.status);
let stroke = if selected.contains(id) || hovered.contains(id) { let stroke = if selected.contains(id) || hovered.contains(id) {
@ -430,13 +427,13 @@ fn prepare(ctx: Res<ContextRes>) {
ctx.set_visuals(egui::Visuals::dark()); ctx.set_visuals(egui::Visuals::dark());
} }
fn toolbar<'a>( fn toolbar(
ctx: Res<ContextRes>, ctx: Res<ContextRes>,
selected: Query<Entity, With<Selected>>, selected: Query<Entity, With<Selected>>,
mut commands: Commands, mut commands: Commands,
mut tool: ResMut<Tool>, mut tool: ResMut<Tool>,
) { ) {
egui::TopBottomPanel::top("top_panel").show(&**ctx, |ui| { egui::TopBottomPanel::top("top_panel").show(&ctx, |ui| {
// ui.heading("sketchrs"); // ui.heading("sketchrs");
let mut selected_tool = *tool; let mut selected_tool = *tool;
ui.horizontal(|ui| { ui.horizontal(|ui| {
@ -482,7 +479,7 @@ impl Default for ShowEntitiesSchedule {
} }
} }
fn central_panel(mut world: &mut World, mut schedule: Local<ShowEntitiesSchedule>) { fn central_panel(world: &mut World, mut schedule: Local<ShowEntitiesSchedule>) {
let ctx = world.get_resource::<ContextRes>().unwrap().0.clone(); let ctx = world.get_resource::<ContextRes>().unwrap().0.clone();
egui::CentralPanel::default() egui::CentralPanel::default()
.frame(egui::Frame::none()) .frame(egui::Frame::none())
@ -501,7 +498,7 @@ fn central_panel(mut world: &mut World, mut schedule: Local<ShowEntitiesSchedule
world.insert_resource(ResponseRes(response)); world.insert_resource(ResponseRes(response));
world.insert_resource(PainterRes(painter)); world.insert_resource(PainterRes(painter));
schedule.0.run(&mut world); schedule.0.run(world);
world.remove_resource::<PainterRes>(); world.remove_resource::<PainterRes>();
world.remove_resource::<ResponseRes>(); world.remove_resource::<ResponseRes>();
@ -509,26 +506,33 @@ fn central_panel(mut world: &mut World, mut schedule: Local<ShowEntitiesSchedule
}); });
} }
#[derive(WorldQuery)]
struct SelectableEntity<'a> {
id: Entity,
point: Option<&'a Point>,
line: Option<&'a Line>,
}
fn side_panel( fn side_panel(
ctx: Res<ContextRes>, ctx: Res<ContextRes>,
selected: Query<(Entity, Option<&Point>, Option<&Line>), With<Selected>>, selected: Query<SelectableEntity, With<Selected>>,
tool: Res<Tool>, tool: Res<Tool>,
) { ) {
egui::SidePanel::right("side_panel") egui::SidePanel::right("side_panel")
.resizable(true) .resizable(true)
.default_width(150.0) .default_width(150.0)
.width_range(80.0..=200.0) .width_range(80.0..=200.0)
.show(&**ctx, |ui| { .show(&ctx, |ui| {
let tool = *tool; let tool = *tool;
ui.vertical(|ui| match tool { ui.vertical(|ui| match tool {
Tool::Select => { Tool::Select => {
let mut count = 0; let mut count = 0;
selected.for_each(|(id, point, line)| { selected.for_each(|sel| {
count += 1; count += 1;
if point.is_some() { if sel.point.is_some() {
ui.label(format!("Selected point {}", id.index())); ui.label(format!("Selected point {}", sel.id.index()));
} else if line.is_some() { } else if sel.line.is_some() {
ui.label(format!("Selected line {}", id.index())); ui.label(format!("Selected line {}", sel.id.index()));
} }
}); });
if count == 0 { if count == 0 {
@ -536,7 +540,7 @@ fn side_panel(
} }
} }
Tool::AddRelation => { Tool::AddRelation => {
if let Some(first) = selected.iter().next() { if let Some(_first) = selected.iter().next() {
} else { } else {
ui.label("Select an entity to add a relation"); ui.label("Select an entity to add a relation");
} }