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