From f88f516c30f494c5aee6b187dced1579cc595edf Mon Sep 17 00:00:00 2001
From: Alessandro Ranellucci <aar@cpan.org>
Date: Sun, 24 Jun 2012 16:09:24 +0200
Subject: [PATCH] Optimize honeycomb travels

---
 lib/Slic3r/Fill/Honeycomb.pm | 8 +++++---
 1 file changed, 5 insertions(+), 3 deletions(-)

diff --git a/lib/Slic3r/Fill/Honeycomb.pm b/lib/Slic3r/Fill/Honeycomb.pm
index 924bf7f81..81a86b0d2 100644
--- a/lib/Slic3r/Fill/Honeycomb.pm
+++ b/lib/Slic3r/Fill/Honeycomb.pm
@@ -83,13 +83,15 @@ sub fill_surface {
         $self->cache->{$cache_id} = [@polygons];
     }
     
-    my $loops = intersection_ex(
+    my @paths = map Slic3r::Polyline->new(@$_, $_->[0]), map @$_, @{intersection_ex(
         $self->cache->{$cache_id},
         [ map @$_, $expolygon->offset_ex($overlap_distance) ],
+    )};
+    my $collection = Slic3r::ExtrusionPath::Collection->new(
+        paths => [ map Slic3r::ExtrusionPath->new(polyline => $_, role => -1), @paths ],
     );
-    my @paths = map [ @$_, $_->[0] ], map @$_, @$loops;
     
-    return {}, @paths;
+    return {}, map $_->polyline, $collection->shortest_path;
 }
 
 1;