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 @@
+