Faster Path2D drawing with polyline

Changes the Path2D drawing to use POLYLINE instead of thick lines.
This commit is contained in:
lawnjelly 2021-12-01 15:23:27 +00:00
parent 56f73a7e29
commit 6db29583f2
2 changed files with 9 additions and 6 deletions

View File

@ -100,16 +100,18 @@ void Path2D::_notification(int p_what) {
#endif
const Color color = Color(0.5, 0.6, 1.0, 0.7);
for (int i = 0; i < curve->get_point_count(); i++) {
Vector2 prev_p = curve->get_point_position(i);
_cached_draw_pts.resize(curve->get_point_count() * 8);
int count = 0;
for (int j = 1; j <= 8; j++) {
real_t frac = j / 8.0;
for (int i = 0; i < curve->get_point_count(); i++) {
for (int j = 0; j < 8; j++) {
real_t frac = j * (1.0 / 8.0);
Vector2 p = curve->interpolate(i, frac);
draw_line(prev_p, p, color, line_width);
prev_p = p;
_cached_draw_pts.set(count++, p);
}
}
draw_polyline(_cached_draw_pts, color, line_width, true);
}
}

View File

@ -38,6 +38,7 @@ class Path2D : public Node2D {
GDCLASS(Path2D, Node2D);
Ref<Curve2D> curve;
Vector<Vector2> _cached_draw_pts;
void _curve_changed();