From 17b90c40598c9558dea630c14c68dcc7c4726829 Mon Sep 17 00:00:00 2001 From: Stewart Allen Date: Tue, 4 Oct 2022 12:56:00 -0400 Subject: [PATCH] add class notes. check for gl lost context --- src/kiri/layers.js | 18 ++++++------------ src/kiri/render.js | 5 +++++ src/kiri/stack.js | 3 +++ src/moto/space.js | 9 +++++++++ 4 files changed, 23 insertions(+), 12 deletions(-) diff --git a/src/kiri/layers.js b/src/kiri/layers.js index 04f52894..3c87e4f2 100644 --- a/src/kiri/layers.js +++ b/src/kiri/layers.js @@ -2,6 +2,12 @@ "use strict"; +/* + * provides the `output` abstraction for turning poly lines (open and closed) + * into primordial geometries (faces, lines, color ranges). used inside of + * workers as part of slicing and preview output. + */ + // dep: geo.base // dep: geo.polygon // dep: geo.polygons @@ -407,18 +413,6 @@ function ProfiledContourGeometry(profileShape, contour, contourClosed) { index.push(p8, p7, p5); } - // unrolled / non-indexed geometry provides a cleaner look because vertex - // shading of indexed geometries looks wrong. this takes longer to re-compute - // so it should be produced unrolled above. - // - // let nufaces = new Float32Array(index.length * 3), ii = 0; - // for (let i of index) { - // nufaces[ii++] = faces[i*3]; - // nufaces[ii++] = faces[i*3+1]; - // nufaces[ii++] = faces[i*3+2]; - // } - // return { index:[], faces: nufaces }; - return {index, faces}; } diff --git a/src/kiri/render.js b/src/kiri/render.js index d5724cb2..35d29fcc 100644 --- a/src/kiri/render.js +++ b/src/kiri/render.js @@ -2,6 +2,11 @@ "use strict"; +/* + * uses `layers.js` to convert paths (usually preview) into primordial geometries. + * the input is based on an array (layers) of arrays containing `Output` objects + */ + // dep: geo.base // dep: geo.point // dep: geo.polygon diff --git a/src/kiri/stack.js b/src/kiri/stack.js index 9222b066..7158dcfd 100644 --- a/src/kiri/stack.js +++ b/src/kiri/stack.js @@ -6,6 +6,9 @@ gapp.register("kiri.stack", [], (root, exports) => { const { kiri } = root; +/* + * converts `layers.js` output data structures into three.js meshes for display + */ class Stack { constructor(view, freeMem, shiny) { this._view = view; diff --git a/src/moto/space.js b/src/moto/space.js index 5f0de7a8..bbb49012 100644 --- a/src/moto/space.js +++ b/src/moto/space.js @@ -403,6 +403,15 @@ gapp.register("moto.space", [], (root, exports) => { canvas.width = w * scale; canvas.height = h * scale; + canvas.addEventListener("webglcontextlost", event => { + console.log('WEB GL CONTEXT LOST'); + event.preventDefault(); + }, false); + + canvas.addEventListener("webglcontextrestored", event => { + console.log('WEB GL CONTEXT RESTORED'); + }, false); + try { context.scale(scale, scale); } catch (e) {