From aff7416b65281458ba478ec24b77d94b183e3b82 Mon Sep 17 00:00:00 2001 From: Arne Dußin Date: Sun, 15 Nov 2020 19:47:39 +0100 Subject: Fix the dimension indicators persisting after add The dimension indicators were drawn very for the blink of an eye when starting a rect that comes after the first. This commit should fix that. --- src/dimension_indicator.rs | 4 ++++ src/tool/room_tool.rs | 6 ++++++ 2 files changed, 10 insertions(+) (limited to 'src') diff --git a/src/dimension_indicator.rs b/src/dimension_indicator.rs index 0ea96d3..2eb3eee 100644 --- a/src/dimension_indicator.rs +++ b/src/dimension_indicator.rs @@ -24,6 +24,10 @@ impl DimensionIndicator { this } + pub fn clear_dimensions(&mut self) { + self.length_lines.clear(); + } + /// Update the dimensions by analysing a given set of points and adjusting the internal /// (measured) dimensions. pub fn update_dimensions(&mut self, corner_points: &[Vec2]) { diff --git a/src/tool/room_tool.rs b/src/tool/room_tool.rs index 0ac74b5..3416596 100644 --- a/src/tool/room_tool.rs +++ b/src/tool/room_tool.rs @@ -30,6 +30,11 @@ impl RoomTool { } impl Tool for RoomTool { + fn deactivate(&mut self) { + self.unfinished_rect = None; + self.dimension_indicator.clear_dimensions(); + } + fn active_update(&mut self, map_data: &mut MapData, rl: &RaylibHandle, transform: &Transform) { let mouse_pos_m = transform.point_px_to_m(rl.get_mouse_position().into()); // Update the currently drawn rectangle, if it exists, and also its dimension indicator. @@ -42,6 +47,7 @@ impl Tool for RoomTool { // Start or finish drawing the currently unfinished rectangle if self.keybindings.finish_draw.is_pressed(rl) && self.unfinished_rect.is_some() { let (pos1, pos2) = self.unfinished_rect.take().unwrap(); + self.dimension_indicator.clear_dimensions(); map_data.rooms_mut().push(Rect::bounding_rect(pos1, pos2)); } else if self.keybindings.start_draw.is_pressed(rl) { let snapped_mouse_pos = snap_to_grid(mouse_pos_m, SNAP_SIZE); -- cgit v1.2.3-70-g09d2