From 1230fe44ef7707d4a138e26af3a7d28d59db0ac5 Mon Sep 17 00:00:00 2001 From: "Diego F. Goberna" Date: Wed, 3 Oct 2018 02:30:51 +0200 Subject: [PATCH] beam effect on new blocks --- assets/img/beam.png | Bin 0 -> 29922 bytes package-lock.json | 6 ++-- src/components/beams.js | 62 ++++++++++++++++++++++++++++++++++ src/components/beat-loader.js | 6 ++++ src/index.html | 7 ++-- src/templates/stage.html | 2 ++ 6 files changed, 77 insertions(+), 6 deletions(-) create mode 100644 assets/img/beam.png create mode 100644 src/components/beams.js diff --git a/assets/img/beam.png b/assets/img/beam.png new file mode 100644 index 0000000000000000000000000000000000000000..b3cf1aa2d09fb5be8602f177586d998fbac1e8a4 GIT binary patch literal 29922 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 KMNUMnLSTYTaO8ae literal 0 HcmV?d00001 diff --git a/package-lock.json b/package-lock.json index e039bd4..d02125e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -95,9 +95,9 @@ "integrity": "sha512-mVxIH5qjik3qnbmeuXnYWFyKkcdLdZEQIFIFky1Z3QY8gZFsbCgocImwAx9UV9DTsIywa/lt3nXyNrpgOQgNCg==" }, "aframe-audioanalyser-component": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/aframe-audioanalyser-component/-/aframe-audioanalyser-component-4.0.0.tgz", - "integrity": "sha512-piyQ6Ui8AmojGEWUx1LpsX2K7R0WiUzeehea699mAf3oE+BxGyDPNlFvi0ti3t9cdhj6ybvySu7xKRZ3f4llyA==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/aframe-audioanalyser-component/-/aframe-audioanalyser-component-4.0.1.tgz", + "integrity": "sha512-jTkt9umD4SoRmW6vlJfm2zG9fV8pzecNzTdJYn12w8hpZ0lp3BtFSKqTDy0RE3dqAsDJo9AU72niZAu8w3NeeA==" }, "aframe-cubemap-component": { "version": "0.1.4", diff --git a/src/components/beams.js b/src/components/beams.js new file mode 100644 index 0000000..63001ea --- /dev/null +++ b/src/components/beams.js @@ -0,0 +1,62 @@ +AFRAME.registerComponent('beams', { + schema: { + poolSize: {default: 10} + }, + init: function () { + var redMaterial; + var blueMaterial; + var materialOptions; + var geo; + var beam; + + this.redBeams = []; + this.blueBeams = []; + this.currentRed = 0; + this.currentBlue = 0; + + materialOptions = { + color: 0xaa3333, + map: new THREE.TextureLoader().load('assets/img/beam.png'), + transparent: true, + blending: THREE.AdditiveBlending + }; + redMaterial = new THREE.MeshBasicMaterial(materialOptions); + materialOptions.color = 0x4444cc; + blueMaterial = new THREE.MeshBasicMaterial(materialOptions); + geo = new THREE.PlaneBufferGeometry(0.4, 50).translate(0, 25, 0); + + for (var j = 0; j < 2; j++) { + for (var i = 0; i < this.data.poolSize; i++) { + beam = new THREE.Mesh(geo, j === 0 ? redMaterial : blueMaterial); + beam.visible = false; + this.el.object3D.add(beam); + this[j === 0 ? 'redBeams' : 'blueBeams'].push(beam); + } + } + }, + + newBeam: function (color, position) { + var beam; + if (color === 'red') { + beam = this.redBeams[this.currentRed]; + this.currentRed = (this.currentRed + 1) % this.redBeams.length; + beam.position.set(position.x, position.y, position.z + this.currentRed / 50.0); // z offset to avoid z-fighting + } else { + beam = this.blueBeams[this.currentBlue]; + this.currentBlue = (this.currentBlue + 1) % this.blueBeams.length; + beam.position.set(position.x, position.y, position.z + this.currentBlue / 50.0); + } + + beam.visible = true; + beam.scale.x = 1; + + AFRAME.anime({ + targets: beam.scale, + x: 0, + duration: 300, + easing: 'easeInCubic', + complete: (anim) => { beam.visible = false; } + }); + } + +}); \ No newline at end of file diff --git a/src/components/beat-loader.js b/src/components/beat-loader.js index c619bce..259b068 100644 --- a/src/components/beat-loader.js +++ b/src/components/beat-loader.js @@ -15,6 +15,10 @@ AFRAME.registerComponent('beat-loader', { horizontalPositions: [-0.60, -0.25, 0.25, 0.60], verticalPositions: [1.00, 1.35, 1.70], + init: function () { + this.beams = document.getElementById('beams').components['beams']; + }, + update: function () { if (!this.data.challengeId || !this.data.difficulty) { return; } this.loadBeats(); @@ -122,6 +126,8 @@ AFRAME.registerComponent('beat-loader', { el.object3D.rotation.z = THREE.Math.degToRad(this.orientations[noteInfo._cutDirection]); el.play(); + this.beams.newBeam(color, el.object3D.position); + if (this.first) { return; } this.first = { diff --git a/src/index.html b/src/index.html index b5d2963..8b5ffae 100644 --- a/src/index.html +++ b/src/index.html @@ -18,9 +18,9 @@ effect-bloom="strength: 1" intro-song overlay="objects: #menu, #keyboard, #rightHand, #leftHand, [mixin~='cursorMesh']" - pool__beat-arrow-blue="mixin: beat arrow-blue-beat; size: 5; container: #beatContainer" - pool__beat-arrow-red="mixin: beat arrow-red-beat; size: 10; container: #beatContainer" - pool__beat-dot-blue="mixin: beat dot-blue-beat; size: 10; container: #beatContainer" + pool__beat-arrow-blue="mixin: beat arrow-blue-beat; size: 5; container: #beatContainer" + pool__beat-arrow-red="mixin: beat arrow-red-beat; size: 10; container: #beatContainer" + pool__beat-dot-blue="mixin: beat dot-blue-beat; size: 10; container: #beatContainer" pool__beat-dot-red="mixin: beat dot-red-beat; size: 10; container: #beatContainer" proxy-event="event: menuchallengeselect; to: #searchResultsContainer, #menuDifficultiesGroup" search @@ -49,6 +49,7 @@ + diff --git a/src/templates/stage.html b/src/templates/stage.html index 143f1bc..1e8335b 100644 --- a/src/templates/stage.html +++ b/src/templates/stage.html @@ -49,6 +49,8 @@ + +