diff --git a/app.js b/app.js index 0c043a76..4c9ffff9 100644 --- a/app.js +++ b/app.js @@ -275,6 +275,7 @@ const script = { "mode/cam/driver", "mode/cam/client", "mode/cam/tool", + "mode/cam/animate", "mode/laser/driver", "kiri/stacks", "kiri/widget", diff --git a/src/mode/cam/animate.js b/src/mode/cam/animate.js new file mode 100644 index 00000000..84de5f7a --- /dev/null +++ b/src/mode/cam/animate.js @@ -0,0 +1,62 @@ +/** Copyright Stewart Allen -- All Rights Reserved */ + +"use strict"; + +(function() { + + let KIRI = self.kiri, + BASE = self.base, + CAM = KIRI.driver.CAM, + PRO = CAM.process, + newPolygon = BASE.newPolygon, + newPoint = BASE.newPoint; + + CAM.animate = function(API) { + const settings = API.conf.get(); + const stock = settings.stock; + const center = stock.center; + + console.log("animate", settings.stock); + + const step = 2; + const stepsX = Math.floor(stock.x / step); + const stepsY = Math.floor(stock.y / step); + const gridPoints = stepsX * stepsY; + + const mat = new THREE.LineBasicMaterial({ + transparent: true, + opacity: 0.75, + color: 0 + }); + + const pos = new Float32Array(gridPoints * 3); + const ind = [];//new Array(stepsX * stepsY); + const ox = (stepsX * step) / 2; + const oy = (stepsY * step) / 2; + + // initialize grid points + for (let x=0, ai=0; x 0) ind.appendAll([ + (stepsY * x) + (y - 1), + (stepsY * x) + (y ) + ]); + if (x > 0) ind.appendAll([ + (stepsY * (x - 1)) + y, + (stepsY * (x )) + y + ]); + } + } + + const geo = new THREE.BufferGeometry(); + geo.setAttribute('position', new THREE.BufferAttribute(pos, 3)); + geo.setIndex(new THREE.BufferAttribute(new Uint16Array(ind), 1)); + const seg = new THREE.LineSegments(geo, mat); + + API.const.SPACE.platform.world.add(seg); + }; + +})(); diff --git a/src/mode/cam/client.js b/src/mode/cam/client.js index 85c0d1d7..58877bb4 100644 --- a/src/mode/cam/client.js +++ b/src/mode/cam/client.js @@ -74,7 +74,7 @@ function animate() { API.view.set(VIEWS.ARRANGE); API.widgets.opacity(0.75); - // console.log("animate", API.conf.get().stock); + CAM.animate(API); } function updateStock(args, event) {