diff --git a/js/kiri-layer.js b/js/kiri-layer.js index a1d2d9e0..b07ae952 100644 --- a/js/kiri-layer.js +++ b/js/kiri-layer.js @@ -10,6 +10,7 @@ let gs_kiri_layer = exports; if (self.kiri.Layer) return; let KIRI = self.kiri, + POLY = self.base.polygons, LP = Layer.prototype, mcache = {}; @@ -133,6 +134,19 @@ let gs_kiri_layer = exports; this.changed = true; }; + LP.noodle = function(poly, offset, color) { + let layer = this; + if (Array.isArray(poly)) { + poly.forEach(p => { layer.noodle(p, offset, color) }); + } else { + let off = []; + POLY.expand(poly.flattenTo([]), offset, poly.getZ(), off, 1); + POLY.expand(poly.flattenTo([]), -offset, poly.getZ(), off, 1); + POLY.nest(off).forEach(p => { this.add(color, {solid: p}) }); + this.changed = true; + } + }; + LP.points = function(points, color, size, opacity) { let layer = this, sz = size/2; diff --git a/js/kiri-slice.js b/js/kiri-slice.js index 94044523..a148689f 100644 --- a/js/kiri-slice.js +++ b/js/kiri-slice.js @@ -576,6 +576,7 @@ let gs_kiri_slice = exports; } if (top.traces) { layer.poly(top.traces, trace_color, true, null); + // layer.noodle(top.traces, 0.15, 0x888888); } if (top.polish) { layer.poly(top.polish.x, 0x880000, true, null); @@ -584,6 +585,8 @@ let gs_kiri_slice = exports; }); layer.render(); + // layer.renderSolid(); + if (scope.camMode) { layers.solid.render(); layers.bridge.render(); diff --git a/js/web-server.js b/js/web-server.js index fe5b450b..7c054d75 100644 --- a/js/web-server.js +++ b/js/web-server.js @@ -809,6 +809,7 @@ let ver = require('../js/license.js'), kiri : [ "ext-three", "license", + "ext-clip2", "ext-tween", "ext-fsave", "ext-earcut",