Improve Graphedit connection lines
This commit is contained in:
@ -857,13 +857,23 @@ PackedVector2Array GraphEdit::get_connection_line(const Vector2 &p_from, const V
|
||||
return ret;
|
||||
}
|
||||
|
||||
float x_diff = (p_to.x - p_from.x);
|
||||
float cp_offset = x_diff * lines_curvature;
|
||||
if (x_diff < 0) {
|
||||
cp_offset *= -1;
|
||||
}
|
||||
|
||||
Curve2D curve;
|
||||
Vector<Color> colors;
|
||||
curve.add_point(p_from);
|
||||
curve.set_point_out(0, Vector2(60, 0));
|
||||
curve.set_point_out(0, Vector2(cp_offset, 0));
|
||||
curve.add_point(p_to);
|
||||
curve.set_point_in(1, Vector2(-60, 0));
|
||||
return curve.tessellate();
|
||||
curve.set_point_in(1, Vector2(-cp_offset, 0));
|
||||
|
||||
if (lines_curvature > 0) {
|
||||
return curve.tessellate(5, 2.0);
|
||||
} else {
|
||||
return curve.tessellate(1);
|
||||
}
|
||||
}
|
||||
|
||||
void GraphEdit::_draw_connection_line(CanvasItem *p_where, const Vector2 &p_from, const Vector2 &p_to, const Color &p_color, const Color &p_to_color, float p_width, float p_zoom) {
|
||||
@ -1684,6 +1694,15 @@ void GraphEdit::_minimap_toggled() {
|
||||
}
|
||||
}
|
||||
|
||||
void GraphEdit::set_connection_lines_curvature(float p_curvature) {
|
||||
lines_curvature = p_curvature;
|
||||
update();
|
||||
}
|
||||
|
||||
float GraphEdit::get_connection_lines_curvature() const {
|
||||
return lines_curvature;
|
||||
}
|
||||
|
||||
void GraphEdit::set_connection_lines_thickness(float p_thickness) {
|
||||
lines_thickness = p_thickness;
|
||||
update();
|
||||
@ -2262,6 +2281,9 @@ void GraphEdit::_bind_methods() {
|
||||
ClassDB::bind_method(D_METHOD("set_use_snap", "enable"), &GraphEdit::set_use_snap);
|
||||
ClassDB::bind_method(D_METHOD("is_using_snap"), &GraphEdit::is_using_snap);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_connection_lines_curvature", "curvature"), &GraphEdit::set_connection_lines_curvature);
|
||||
ClassDB::bind_method(D_METHOD("get_connection_lines_curvature"), &GraphEdit::get_connection_lines_curvature);
|
||||
|
||||
ClassDB::bind_method(D_METHOD("set_connection_lines_thickness", "pixels"), &GraphEdit::set_connection_lines_thickness);
|
||||
ClassDB::bind_method(D_METHOD("get_connection_lines_thickness"), &GraphEdit::get_connection_lines_thickness);
|
||||
|
||||
@ -2298,6 +2320,7 @@ void GraphEdit::_bind_methods() {
|
||||
ADD_PROPERTY(PropertyInfo(Variant::INT, "panning_scheme", PROPERTY_HINT_ENUM, "Scroll Zooms,Scroll Pans"), "set_panning_scheme", "get_panning_scheme");
|
||||
|
||||
ADD_GROUP("Connection Lines", "connection_lines");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "connection_lines_curvature"), "set_connection_lines_curvature", "get_connection_lines_curvature");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::FLOAT, "connection_lines_thickness"), "set_connection_lines_thickness", "get_connection_lines_thickness");
|
||||
ADD_PROPERTY(PropertyInfo(Variant::BOOL, "connection_lines_antialiased"), "set_connection_lines_antialiased", "is_connection_lines_antialiased");
|
||||
|
||||
|
||||
Reference in New Issue
Block a user