Browse Source

Merge pull request #73444 from bruvzg/dash_checks

Add dash and step size checks to draw_dashed_line.
Rémi Verschelde 2 năm trước cách đây
mục cha
commit
b8bab73d7e
1 tập tin đã thay đổi với 3 bổ sung2 xóa
  1. 3 2
      scene/main/canvas_item.cpp

+ 3 - 2
scene/main/canvas_item.cpp

@@ -515,12 +515,13 @@ void CanvasItem::draw_dashed_line(const Point2 &p_from, const Point2 &p_to, cons
 	ERR_FAIL_COND_MSG(!drawing, "Drawing is only allowed inside NOTIFICATION_DRAW, _draw() function or 'draw' signal.");
 
 	float length = (p_to - p_from).length();
-	if (length < p_dash) {
+	Vector2 step = p_dash * (p_to - p_from).normalized();
+
+	if (length < p_dash || step == Vector2() || p_dash <= 0.0) {
 		RenderingServer::get_singleton()->canvas_item_add_line(canvas_item, p_from, p_to, p_color, p_width);
 		return;
 	}
 
-	Vector2 step = p_dash * (p_to - p_from).normalized();
 	int steps = (p_aligned) ? Math::ceil(length / p_dash) : Math::floor(length / p_dash);
 	if (steps % 2 == 0) {
 		steps--;