diff --git a/src/ui/panes/pid_drawing_tool.rs b/src/ui/panes/pid_drawing_tool.rs index 68a47de64cb3600b9428b907ca187741b9a8e387..4fcbcf94b7de6a50415541a35844d7ef4d5e9f7e 100644 --- a/src/ui/panes/pid_drawing_tool.rs +++ b/src/ui/panes/pid_drawing_tool.rs @@ -242,8 +242,10 @@ impl PidPane { ui.menu_button("Symbols", |ui| { for symbol in Symbol::iter() { if ui.button(symbol.to_string()).clicked() { - self.elements - .push(Element::new(self.grid.screen_to_grid(pointer_pos), symbol)); + self.elements.push(Element::new( + self.grid.screen_to_grid(pointer_pos).round(), + symbol, + )); self.action.take(); ui.close_menu(); } diff --git a/src/ui/panes/pid_drawing_tool/elements.rs b/src/ui/panes/pid_drawing_tool/elements.rs index 179f5234630203ee43daa6d2c7e8f9cad0cc8122..e3748a197fb3831d392aa7da02f5895c8a24e96c 100644 --- a/src/ui/panes/pid_drawing_tool/elements.rs +++ b/src/ui/panes/pid_drawing_tool/elements.rs @@ -25,9 +25,9 @@ pub struct Element { } impl Element { - pub fn new(position: Vec2, symbol: Symbol) -> Self { + pub fn new(center: Vec2, symbol: Symbol) -> Self { Self { - position, + position: center - symbol.size() / 2.0, rotation: 0.0, anchor_points: symbol.anchor_points(), symbol, @@ -54,7 +54,7 @@ impl Element { let rotm_e_to_g = Mat2::from_angle(self.rotation); // Center in grid's frame - let center_g = rotm_e_to_g * self.symbol.size() / 2.0; + let center_g = rotm_e_to_g * self.size() / 2.0; self.position = p_g - center_g; }