diff --git a/assets/sounds/saberDraw.wav b/assets/sounds/saberDraw.wav new file mode 100644 index 0000000..8bec222 Binary files /dev/null and b/assets/sounds/saberDraw.wav differ diff --git a/src/components/saber-controls.js b/src/components/saber-controls.js index d105436..fa9b314 100644 --- a/src/components/saber-controls.js +++ b/src/components/saber-controls.js @@ -22,6 +22,7 @@ AFRAME.registerComponent('saber-controls', { var el = this.el; var saberHandleEl = document.createElement('a-entity'); var bladeEl = this.bladeEl = document.createElement('a-entity'); + var bladeElPivot = document.createElement('a-entity'); var saberPivotEl = document.createElement('a-entity'); var highlightTop = document.createElement('a-entity'); var highlightBottom = document.createElement('a-entity'); @@ -32,8 +33,13 @@ AFRAME.registerComponent('saber-controls', { 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.setAttribute('play-sound', {event: 'draw', sound: "#saberDraw"}); bladeEl.object3D.visible = this.data.bladeEnabled; + // For blade saber draw animation + bladeElPivot.appendChild(bladeEl); + bladeElPivot.setAttribute('animation', 'property: scale; from: 0 0 0; to: 1.0 1.0 1.0; dur: 2000; easing: easeOutCubic; startEvents: draw'); + saberHandleEl.setAttribute('material', {shader: 'flat', color: '#151515'}); saberHandleEl.setAttribute('geometry', {primitive: 'box', height: 0.2, depth: 0.025, width: 0.025}); saberHandleEl.setAttribute('position', '0 0 0'); @@ -51,7 +57,7 @@ AFRAME.registerComponent('saber-controls', { saberPivotEl.setAttribute('rotation', '90 0 0'); saberPivotEl.appendChild(saberHandleEl); - saberPivotEl.appendChild(bladeEl); + saberPivotEl.appendChild(bladeElPivot); el.appendChild(saberPivotEl); this.controllerConnected = true; @@ -65,6 +71,9 @@ AFRAME.registerComponent('saber-controls', { update: function () { if (!this.bladeEl) { return; } this.bladeEl.object3D.visible = this.data.bladeEnabled; + if (this.data.bladeEnabled) { + this.bladeEl.emit('draw'); + } }, tick: function () { diff --git a/src/index.html b/src/index.html index 427b11a..fc3eaf2 100644 --- a/src/index.html +++ b/src/index.html @@ -27,6 +27,7 @@ +