/** Copyright 2014-2019 Stewart Allen -- All Rights Reserved */ "use strict"; // dep: geo.base // jscad dep injected in app so it comes before everything else gapp.register("geo.csg", [], (root, exports) => { const { base } = root; const debug = false; const CSG = { union() { if (debug) { console.log(JSON.stringify([ ...arguments ])); } let union = jscadModeling.booleans.union(...arguments); if (debug) { console.log(JSON.stringify(union)); } return union; }, subtract() { return jscadModeling.booleans.subtract(...arguments); }, intersect() { return jscadModeling.booleans.intersect(...arguments); }, toPositionArray(geom) { const out = []; const poly = jscadModeling.geometries.geom3 .toPolygons(geom) .map(p => p.vertices); for (let p of poly) { let p0 = p[0]; for (let i = 0; i