From 7d02e56980f25d4d6ea489f2a7e35717db1d5fa6 Mon Sep 17 00:00:00 2001 From: Michael Feldstein Date: Wed, 21 Dec 2016 16:55:39 -0800 Subject: [PATCH 1/2] Add straightedge brush --- src/brushes/straightedge.js | 39 +++++++++++++++++++++++++++++++++++++ src/index.js | 1 + 2 files changed, 40 insertions(+) create mode 100644 src/brushes/straightedge.js diff --git a/src/brushes/straightedge.js b/src/brushes/straightedge.js new file mode 100644 index 000000000..d0b245dfc --- /dev/null +++ b/src/brushes/straightedge.js @@ -0,0 +1,39 @@ +/* globals AFRAME THREE */ +AFRAME.registerBrush('straightedge', + { + init: function (color, width) { + this.material = new THREE.LineBasicMaterial({ + color: this.data.color, + linewidth: 15, + side: THREE.DoubleSide + }); + this.geometry = new THREE.BufferGeometry(); + this.positions = new Float32Array(2 * 3); + this.geometry.addAttribute('position', new THREE.BufferAttribute(this.positions, 3)); + this.line = new THREE.Line(this.geometry, this.material) + this.line.frustumCulled = false; + this.object3D.add(this.line); + }, + + addPoint: function (position, orientation, pointerPosition, pressure, timestamp) { + this.material.linewidth = this.data.size * 100 + + if (this.data.numPoints == 0) { + this.positions[0] = pointerPosition.x; + this.positions[1] = pointerPosition.y; + this.positions[2] = pointerPosition.z; + } + + // Always set the second position, even when its the first point, + // otherwise there will be a quick line to 0,0,0 before the second point + // is added. + this.positions[3] = pointerPosition.x; + this.positions[4] = pointerPosition.y; + this.positions[5] = pointerPosition.z; + + this.geometry.attributes.position.needsUpdate = true + return true; + } + }, + {thumbnail: 'brushes/thumb_cubes.gif', spacing: 0.01} +); diff --git a/src/index.js b/src/index.js index fc5a0ff5a..6d710b787 100644 --- a/src/index.js +++ b/src/index.js @@ -27,3 +27,4 @@ require('./brushes/stamp.js'); require('./brushes/spheres.js'); require('./brushes/cubes.js'); require('./brushes/rainbow.js'); +require('./brushes/straightedge.js'); From ec830626a37fd2dd1dbe4f90b260c9d94a304a2a Mon Sep 17 00:00:00 2001 From: Mike Feldstein Date: Wed, 21 Dec 2016 17:05:08 -0800 Subject: [PATCH 2/2] Add straightedge icon --- brushes/thumb_straightedge.png | Bin 0 -> 4455 bytes src/brushes/straightedge.js | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 brushes/thumb_straightedge.png diff --git a/brushes/thumb_straightedge.png b/brushes/thumb_straightedge.png new file mode 100644 index 0000000000000000000000000000000000000000..2163e76b41abe740140cf22c1cd679edc90bc7d9 GIT binary patch literal 4455 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 literal 0 HcmV?d00001 diff --git a/src/brushes/straightedge.js b/src/brushes/straightedge.js index d0b245dfc..5428a68cd 100644 --- a/src/brushes/straightedge.js +++ b/src/brushes/straightedge.js @@ -35,5 +35,5 @@ AFRAME.registerBrush('straightedge', return true; } }, - {thumbnail: 'brushes/thumb_cubes.gif', spacing: 0.01} + {thumbnail: 'brushes/thumb_straightedge.png', spacing: 0.01} );