tessellate = (function() { Module.TOTAL_MEMORY = 1024 * 1024; var c_tessellate = Module.cwrap('tessellate', 'void', ['number', 'number', 'number', 'number', 'number', 'number']); // special tessellator for extrusion layer var tessellate = function(vertices, v_start, v_end, boundaries, b_start, b_end) { var i; var v_len = (v_end - v_start); var b_len = (b_end - b_start); var p = Module._malloc(v_len * 8); for (i=0; i< v_len; ++i) Module.setValue(p+i*8, vertices[v_start + i], 'double'); var contours = Module._malloc((b_len + 1) * 4); // pointer to first contour Module.setValue(contours + 0, p + 0, 'i32'); var offset = p; // pointer to further contours + end for (i = 0; i> 1) & 1)) continue; console.log("shift " + boundaries[b_start + j]); for (var n = ntris * 3, tri = 0; tri < n; tri++) if (result_triangles[tri] >= start) result_triangles[tri] += 2; start += 2; } Module._free(pnverts); Module._free(pntris); Module._free(ppcoordinates_out); Module._free(pptris_out); Module._free(pcoordinates_out); Module._free(ptris_out); Module._free(p); Module._free(contours); return { vertices: result_vertices, triangles: result_triangles }; }; return tessellate; })();