diff --git a/src/components/saber-controls.js b/src/components/saber-controls.js index 7e8db2e..8c1d1cb 100644 --- a/src/components/saber-controls.js +++ b/src/components/saber-controls.js @@ -1,6 +1,7 @@ AFRAME.registerComponent('saber-controls', { schema: { - hand: {default: 'left', oneOf: ['left', 'right']} + hand: {default: 'left', oneOf: ['left', 'right']}, + bladeEnabled: {default: true} }, colors: { @@ -17,20 +18,20 @@ AFRAME.registerComponent('saber-controls', { el.addEventListener('controllerconnected', this.initSaber.bind(this)); }, - initSaber: function () { var el = this.el; var saberHandleEl = document.createElement('a-entity'); - var saberEl = this.saberEl = document.createElement('a-entity'); + var bladeEl = this.bladeEl = document.createElement('a-entity'); var saberPivotEl = document.createElement('a-entity'); var highlightTop = document.createElement('a-entity'); var highlightBottom = document.createElement('a-entity'); this.boundingBox = new THREE.Box3(); - saberEl.setAttribute('material', {shader: 'flat', color: this.colors[this.data.hand]}); - saberEl.setAttribute('geometry', {primitive: 'box', height: 0.9, depth: 0.020, width: 0.020}); - saberEl.setAttribute('position', '0 -0.55 0'); + bladeEl.setAttribute('material', {shader: 'flat', color: this.colors[this.data.hand]}); + bladeEl.setAttribute('geometry', {primitive: 'box', height: 0.9, depth: 0.020, width: 0.020}); + bladeEl.setAttribute('position', '0 -0.55 0'); + bladeEl.object3D.visible = this.data.bladeEnabled; saberHandleEl.setAttribute('material', {shader: 'flat', color: '#151515'}); saberHandleEl.setAttribute('geometry', {primitive: 'box', height: 0.2, depth: 0.025, width: 0.025}); @@ -49,13 +50,18 @@ AFRAME.registerComponent('saber-controls', { saberPivotEl.setAttribute('rotation', '90 0 0'); saberPivotEl.appendChild(saberHandleEl); - saberPivotEl.appendChild(saberEl); + saberPivotEl.appendChild(bladeEl); el.appendChild(saberPivotEl); }, + update: function () { + if (!this.bladeEl) { return; } + this.bladeEl.object3D.visible = this.data.bladeEnabled; + }, + tick: function () { - if (!this.saberEl) { return; } - this.boundingBox.setFromObject(this.saberEl.getObject3D('mesh')); + if (!this.bladeEl) { return; } + this.boundingBox.setFromObject(this.bladeEl.getObject3D('mesh')); } }); \ No newline at end of file diff --git a/src/index.html b/src/index.html index cce091e..845bb1b 100644 --- a/src/index.html +++ b/src/index.html @@ -49,12 +49,14 @@ saber-controls="hand: left" proxy-event__pause="event: menudown; to: a-scene; as: pause" proxy-event__pauserifta="event: abuttondown; to: a-scene; as: pause" - proxy-event__pauseriftb="event: bbuttondown; to: a-scene; as: pause"> + proxy-event__pauseriftb="event: bbuttondown; to: a-scene; as: pause" + bind__saber-controls="bladeEnabled: !menu.active"> + proxy-event__pauserifty="event: ybuttondown; to: a-scene; as: pause" + bind__saber-controls="bladeEnabled: !menu.active">