From 652ed0fa7fc11bf51878c5889b8cf386068ff192 Mon Sep 17 00:00:00 2001 From: "Diego F. Goberna" Date: Mon, 12 Nov 2018 21:13:43 +0100 Subject: [PATCH] fixes from kevin comments --- src/assets.html | 2 +- src/components/floor-shader.js | 2 +- src/components/saber-intersection.js | 33 +++++++++++++++------------- src/components/wall-shader.js | 2 +- src/templates/stage.html | 2 +- src/templates/tutorial.html | 2 +- 6 files changed, 23 insertions(+), 20 deletions(-) diff --git a/src/assets.html b/src/assets.html index f360e20..d0ac264 100644 --- a/src/assets.html +++ b/src/assets.html @@ -81,7 +81,7 @@ diff --git a/src/components/floor-shader.js b/src/components/floor-shader.js index bcf77d5..91ee4bb 100644 --- a/src/components/floor-shader.js +++ b/src/components/floor-shader.js @@ -1,4 +1,4 @@ -AFRAME.registerShader('floor-shader', { +AFRAME.registerShader('floorShader', { schema: { src: {type: 'map', is: 'uniform'}, normalMap: {type: 'map', is: 'uniform'}, diff --git a/src/components/saber-intersection.js b/src/components/saber-intersection.js index b10953c..64e9557 100644 --- a/src/components/saber-intersection.js +++ b/src/components/saber-intersection.js @@ -1,26 +1,29 @@ AFRAME.registerComponent('saber-intersection', { dependencies: ['raycaster__game'], init: function () { + this.hiddenIntersection = {x: 999, y: 0, z: 0}; this.saberHit = { - 'rightHand': {active: false, position: null, raycaster: null}, - 'leftHand': {active: false, position: null, raycaster: null} + rightHand: {active: false, position: null, raycaster: null}, + leftHand: {active: false, position: null, raycaster: null} }; this.intersecting = false; + this.saberEnterFunc = this.saberEnter.bind(this); + this.saberLeaveFunc = this.saberLeave.bind(this); }, pause: function () { this.el.removeAttribute('raycastable-game'); - this.el.removeEventListener('mouseenter', this.saberEnter); - this.el.removeEventListener('mouseleave', this.saberLeave); + this.el.removeEventListener('mouseenter', this.saberEnterFunc); + this.el.removeEventListener('mouseleave', this.saberLeaveFunc); }, play: function () { this.el.setAttribute('raycastable-game', ''); - this.el.addEventListener('mouseenter', this.saberEnter.bind(this)); - this.el.addEventListener('mouseleave', this.saberLeave.bind(this)); - this.material = this.el.object3D.children[0].material; - this.saberHit['rightHand'].raycaster = document.getElementById('rightHand').components['raycaster__game']; - this.saberHit['leftHand'].raycaster = document.getElementById('leftHand').components['raycaster__game']; + this.el.addEventListener('mouseenter', this.saberEnterFunc); + this.el.addEventListener('mouseleave', this.saberLeaveFunc); + this.material = this.el.getObject3D('mesh').material; + this.saberHit.rightHand.raycaster = document.getElementById('rightHand').components.raycaster__game; + this.saberHit.leftHand.raycaster = document.getElementById('leftHand').components.raycaster__game; }, saberEnter: function (evt) { @@ -31,19 +34,19 @@ AFRAME.registerComponent('saber-intersection', { saberLeave: function (evt) { const hand = evt.detail.cursorEl.id; this.saberHit[hand].active = false; - this.material.uniforms[hand == 'rightHand' ? 'hitRight' : 'hitLeft'].value = {x: 999, y: 0, z: 0}; - this.intersecting = this.saberHit['rightHand'].active || this.saberHit['leftHand'].active; + this.material.uniforms[hand == 'rightHand' ? 'hitRight' : 'hitLeft'].value = this.hiddenIntersection; + this.intersecting = this.saberHit.rightHand.active || this.saberHit.leftHand.active; }, tick: function (time, delta) { if (this.intersecting) { var int; - if (this.saberHit['rightHand'].active) { - int = this.saberHit['rightHand'].raycaster.getIntersection(this.el); + if (this.saberHit.rightHand.active) { + int = this.saberHit.rightHand.raycaster.getIntersection(this.el); if (int) { this.material.uniforms.hitRight.value = int.point; } } - if (this.saberHit['leftHand'].active) { - int = this.saberHit['leftHand'].raycaster.getIntersection(this.el); + if (this.saberHit.leftHand.active) { + int = this.saberHit.leftHand.raycaster.getIntersection(this.el); if (int) { this.material.uniforms.hitLeft.value = int.point; } } } diff --git a/src/components/wall-shader.js b/src/components/wall-shader.js index 2ef56e4..83a2ace 100644 --- a/src/components/wall-shader.js +++ b/src/components/wall-shader.js @@ -1,5 +1,5 @@ -AFRAME.registerShader('wall-shader', { +AFRAME.registerShader('wallShader', { schema: { iTime: {type: 'time', is: 'uniform'}, tex: {type: 'map', is: 'uniform'}, diff --git a/src/templates/stage.html b/src/templates/stage.html index 3f6e0d7..3f2b845 100644 --- a/src/templates/stage.html +++ b/src/templates/stage.html @@ -127,7 +127,7 @@ diff --git a/src/templates/tutorial.html b/src/templates/tutorial.html index 14a24b9..ad67c44 100644 --- a/src/templates/tutorial.html +++ b/src/templates/tutorial.html @@ -46,7 +46,7 @@ geometry="width: 0.3; height: 0.04; depth: 0.3" bind__animation="enabled: menuActive" animation="property: object3D.position.z; from: -0.5; to: -0.1; dur: 2000; easing: linear; loop: true; easing: easeInOutCubic" - material="shader: wall-shader; tex: #noiseTexture; repeat: 1 2; transparent: true"> + material="shader: wallShader; tex: #noiseTexture; repeat: 1 2; transparent: true">