Procházet zdrojové kódy

Merge pull request #29360 from Calinou/improve-curve-editor-rendering

Improve the curve editor rendering
Rémi Verschelde před 6 roky
rodič
revize
0f26d09fbf
1 změnil soubory, kde provedl 12 přidání a 11 odebrání
  1. 12 11
      editor/plugins/curve_editor_plugin.cpp

+ 12 - 11
editor/plugins/curve_editor_plugin.cpp

@@ -593,7 +593,8 @@ struct CanvasItemPlotCurve {
 			color2(p_color2) {}
 
 	void operator()(Vector2 pos0, Vector2 pos1, bool in_definition) {
-		ci.draw_line(pos0, pos1, in_definition ? color1 : color2);
+		// FIXME: Using a line width greater than 1 breaks curve rendering
+		ci.draw_line(pos0, pos1, in_definition ? color1 : color2, 1, true);
 	}
 };
 
@@ -616,8 +617,8 @@ void CurveEditor::_draw() {
 	Vector2 min_edge = get_world_pos(Vector2(0, view_size.y));
 	Vector2 max_edge = get_world_pos(Vector2(view_size.x, 0));
 
-	const Color grid_color0 = Color(1.0, 1.0, 1.0, 0.15);
-	const Color grid_color1 = Color(1.0, 1.0, 1.0, 0.07);
+	const Color grid_color0 = get_color("mono_color", "Editor") * Color(1, 1, 1, 0.15);
+	const Color grid_color1 = get_color("mono_color", "Editor") * Color(1, 1, 1, 0.07);
 	draw_line(Vector2(min_edge.x, curve.get_min_value()), Vector2(max_edge.x, curve.get_min_value()), grid_color0);
 	draw_line(Vector2(max_edge.x, curve.get_max_value()), Vector2(min_edge.x, curve.get_max_value()), grid_color0);
 	draw_line(Vector2(0, min_edge.y), Vector2(0, max_edge.y), grid_color0);
@@ -674,13 +675,13 @@ void CurveEditor::_draw() {
 
 		if (i != 0) {
 			Vector2 control_pos = get_tangent_view_pos(i, TANGENT_LEFT);
-			draw_line(get_view_pos(pos), control_pos, tangent_color);
+			draw_line(get_view_pos(pos), control_pos, tangent_color, Math::round(EDSCALE), true);
 			draw_rect(Rect2(control_pos, Vector2(1, 1)).grow(2), tangent_color);
 		}
 
 		if (i != curve.get_point_count() - 1) {
 			Vector2 control_pos = get_tangent_view_pos(i, TANGENT_RIGHT);
-			draw_line(get_view_pos(pos), control_pos, tangent_color);
+			draw_line(get_view_pos(pos), control_pos, tangent_color, Math::round(EDSCALE), true);
 			draw_rect(Rect2(control_pos, Vector2(1, 1)).grow(2), tangent_color);
 		}
 	}
@@ -689,8 +690,8 @@ void CurveEditor::_draw() {
 
 	draw_set_transform_matrix(_world_to_view);
 
-	const Color line_color = get_color("highlight_color", "Editor");
-	const Color edge_line_color = get_color("font_color", "Editor");
+	const Color line_color = get_color("font_color", "Editor");
+	const Color edge_line_color = get_color("highlight_color", "Editor");
 
 	CanvasItemPlotCurve plot_func(*this, line_color, edge_line_color);
 	plot_curve_accurate(curve, 4.f / view_size.x, plot_func);
@@ -736,10 +737,10 @@ void CurveEditor::stroke_rect(Rect2 rect, Color color) {
 	Vector2 c(rect.position.x, rect.position.y + rect.size.y);
 	Vector2 d(rect.position + rect.size);
 
-	draw_line(a, b, color);
-	draw_line(b, d, color);
-	draw_line(d, c, color);
-	draw_line(c, a, color);
+	draw_line(a, b, color, Math::round(EDSCALE));
+	draw_line(b, d, color, Math::round(EDSCALE));
+	draw_line(d, c, color, Math::round(EDSCALE));
+	draw_line(c, a, color, Math::round(EDSCALE));
 }
 
 void CurveEditor::_bind_methods() {