Fix cliippy
This commit is contained in:
parent
25c03beb2d
commit
50ab2d1976
54
src/main.rs
54
src/main.rs
@ -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");
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user