From 5f4960db9b821b777fa995736a6b4cbe68e6f2ce Mon Sep 17 00:00:00 2001 From: Sahil gill <121870358+Sahilgill24@users.noreply.github.com> Date: Fri, 19 Apr 2024 21:05:58 +0530 Subject: [PATCH] Fix crash when Pen tool's in-progress point snaps along an angle with its previous anchor (#1701) changes --- editor/src/messages/tool/tool_messages/pen_tool.rs | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/editor/src/messages/tool/tool_messages/pen_tool.rs b/editor/src/messages/tool/tool_messages/pen_tool.rs index 97d28778..639b4fcb 100644 --- a/editor/src/messages/tool/tool_messages/pen_tool.rs +++ b/editor/src/messages/tool/tool_messages/pen_tool.rs @@ -492,10 +492,13 @@ impl PenToolData { if let Some(relative) = relative.map(|layer| transform.transform_point2(layer)).filter(|_| snap_angle || lock_angle) { let resolution = LINE_ROTATE_SNAP_ANGLE.to_radians(); + let angle = if lock_angle { self.angle - } else { + } else if (relative - document_pos) != DVec2::ZERO && !lock_angle { (-(relative - document_pos).angle_between(DVec2::X) / resolution).round() * resolution + } else { + self.angle }; document_pos = relative - (relative - document_pos).project_onto(DVec2::new(angle.cos(), angle.sin())); @@ -535,7 +538,11 @@ impl PenToolData { } if let Some(relative) = relative.map(|layer| transform.transform_point2(layer)) { - self.angle = -(relative - document_pos).angle_between(DVec2::X) + if (relative - document_pos) != DVec2::ZERO { + self.angle = -(relative - document_pos).angle_between(DVec2::X) + } else { + self.angle = 0.0; + } } transform.inverse().transform_point2(document_pos)