From 5eec114f1af03d856dfe99b97295f7a31ca86396 Mon Sep 17 00:00:00 2001 From: Kevin Ngo Date: Thu, 11 Oct 2018 23:22:54 -0700 Subject: [PATCH] amplify beat heat sound, tweak detune/playback rate, bump aframe for pooling fix (my overlay branch, rename to aframe-master to keep source map alive and easier copying) --- assets/sounds/beatHit.ogg | Bin 67054 -> 70595 bytes src/components/beat-hit.js | 36 ++++- src/index.html | 6 +- .../{aframe.effects.js => aframe-master.js} | 126 +++++++++--------- ...me.effects.js.map => aframe-master.js.map} | 6 +- 5 files changed, 103 insertions(+), 71 deletions(-) rename vendor/{aframe.effects.js => aframe-master.js} (99%) rename vendor/{aframe.effects.js.map => aframe-master.js.map} (99%) diff --git a/assets/sounds/beatHit.ogg b/assets/sounds/beatHit.ogg index 8dd23fd45bcb33ed64584ed341619e979e1cc00c..cc523c61884d1cffae62a210a2955f0a52bc9e5f 100644 GIT binary patch delta 66978 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

VbV1z7rPMM|tsZ=kx_z9VVW0%2Q};9+kEl? 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 Q41yyYz<+5c`Q_GM0GOT=CjbBd delta 63394 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ʼg@K^Xj}u~@XafmYA{cpU|fuMoX0x% zF7Z#PT7|tufm#febMH`-QFaS*uV{Tsq%oJO60z8FF=^%cREk;(i*>}z^c6|u%t!d-_+~D;Jv&_!^kq z#lgVm2}8x$twZgHJx>Xa^yQ6|I8y~m4?ZV4@JS$TvtQL68j1^_7-5^kX9}8*%{OHu zXZ_mj#AymZ>cG?H&|+)^ZpX&SEAH=SAkcVLxelXWFQH2WNlSwL#97^*NJ)?`kLV6l zLR-@_PzY&wo9G5^k+5oG5Cj0nEZ2KrD!n{6F)K7IW}@PlTT1H18DD+($wrM>&rowJSVyeq_EMTO~4-G`3D|6PqIIjj=-%J%sb+;xW&;iSDQz~_mb|*~T za~XtC7?cxwg5`-LyA@PLr_Igvm<*f)d*+XKJU;JaQGLsB__Plg5YY9ycV`-`ZR$Iu z`eGYGa`G(Px?8G>5?jeCMr*XqhXqmvD>C?h%B8bzqq_E;mAZizLTT;oTR=6Lg;=vg zg6Ne>vEwm@PPa#G7XY7F*}}7mL8p)0<|&^cud{HQy~}t+REazqVK&^N4!=xzX)xAV zf5rxE)vOupw%=dDV29#x^oo@>tvQ^g#7C-V-FLnIukBgo z^QLWwCcygTSG`&@S_J=!%1ayR{aaniayS(q$HjESj zmD7+c(IsLr&^hYΠ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 Super Saber - + {% if IS_PRODUCTION %} + + {% else %} + + {% endif %} diff --git a/vendor/aframe.effects.js b/vendor/aframe-master.js similarity index 99% rename from vendor/aframe.effects.js rename to vendor/aframe-master.js index 3064421..a789c6f 100644 --- a/vendor/aframe.effects.js +++ b/vendor/aframe-master.js @@ -51,7 +51,7 @@ function(a){a=P(a);for(var c=v.length;c--;)for(var d=v[c],b=d.animations,f=b.len },{}],3:[function(_dereq_,module,exports){ module.exports = function numtype(num, def) { return typeof num === 'number' - ? num + ? num : (typeof def === 'number' ? def : 0) } },{}],4:[function(_dereq_,module,exports){ @@ -207,7 +207,7 @@ module.exports = { var value = attributes[key]; style.setAttribute('data-' + key, value); } - + if (style.sheet) { // for jsdom and IE9+ style.innerHTML = cssText; style.sheet.cssText = cssText; @@ -416,11 +416,11 @@ module.exports = function (a, b) { if (!Buffer.isBuffer(b)) return undefined; if (typeof a.equals === 'function') return a.equals(b); if (a.length !== b.length) return false; - + for (var i = 0; i < a.length; i++) { if (a[i] !== b[i]) return false; } - + return true; }; @@ -2384,7 +2384,7 @@ function forEach(list, iterator, context) { if (arguments.length < 3) { context = this } - + if (toString.call(list) === '[object Array]') forEachArray(list, iterator, context) else if (typeof list === 'string') @@ -2604,8 +2604,8 @@ var CAP_HEIGHTS = ['H', 'I', 'N', 'E', 'F', 'K', 'L', 'T', 'U', 'V', 'W', 'X', ' var TAB_ID = '\t'.charCodeAt(0) var SPACE_ID = ' '.charCodeAt(0) -var ALIGN_LEFT = 0, - ALIGN_CENTER = 1, +var ALIGN_LEFT = 0, + ALIGN_CENTER = 1, ALIGN_RIGHT = 2 module.exports = function createLayout(opt) { @@ -2629,10 +2629,10 @@ TextLayout.prototype.update = function(opt) { throw new Error('must provide a valid bitmap font') var glyphs = this.glyphs - var text = opt.text||'' + var text = opt.text||'' var font = opt.font this._setupSpaceGlyphs(font) - + var lines = wordWrap.lines(text, opt) var minWidth = opt.width || 0 @@ -2656,7 +2656,7 @@ TextLayout.prototype.update = function(opt) { //draw text along baseline y -= height - + //the metrics for this text layout this._width = maxLineWidth this._height = height @@ -2666,7 +2666,7 @@ TextLayout.prototype.update = function(opt) { this._capHeight = getCapHeight(font) this._lineHeight = lineHeight this._ascender = lineHeight - descender - this._xHeight - + //layout each glyph var self = this lines.forEach(function(line, lineIndex) { @@ -2674,17 +2674,17 @@ TextLayout.prototype.update = function(opt) { var end = line.end var lineWidth = line.width var lastGlyph - + //for each glyph in that line... for (var i=start; i= 0) + if (idx >= 0) return font.chars[idx].height } return 0 @@ -2846,7 +2846,7 @@ function getMGlyph(font) { for (var i=0; i= 0) + if (idx >= 0) return font.chars[idx] } return 0 @@ -2856,7 +2856,7 @@ function getCapHeight(font) { for (var i=0; i= 0) + if (idx >= 0) return font.chars[idx].height } return 0 @@ -2926,7 +2926,7 @@ module.exports = function(opt, cb) { if (!body) return cb(new Error('no body result')) - var binary = false + var binary = false //if the response type is an array buffer, //we need to convert it into a regular Buffer object @@ -2940,9 +2940,9 @@ module.exports = function(opt, cb) { if (isBinaryFormat(body)) { binary = true //if we have a string, turn it into a Buffer - if (typeof body === 'string') + if (typeof body === 'string') body = new Buffer(body, 'binary') - } + } //we are not parsing a binary format, just ASCII/XML/etc if (!binary) { @@ -2980,7 +2980,7 @@ function getBinaryOpts(opt) { //IE10+ and other modern browsers support array buffers if (xml2) return xtend(opt, { responseType: 'arraybuffer' }) - + if (typeof self.XMLHttpRequest === 'undefined') throw new Error('your browser does not support XHR loading') @@ -3146,7 +3146,7 @@ function splitLine(line, idx) { return null var space = line.indexOf(' ') - if (space === -1) + if (space === -1) throw new Error("no named row at line " + idx) var key = line.substring(0, space) @@ -3154,7 +3154,7 @@ function splitLine(line, idx) { line = line.substring(space + 1) //clear "letter" field as it is non-standard and //requires additional complexity to parse " / = symbols - line = line.replace(/letter=[\'\"]\S+[\'\"]/gi, '') + line = line.replace(/letter=[\'\"]\S+[\'\"]/gi, '') line = line.split("=") line = line.map(function(str) { return str.trim().match((/(".*?"|[^"\s]+)+(?=\s*|\s*$)/g)) @@ -3225,7 +3225,7 @@ module.exports = function readBMFontBinary(buf) { var vers = buf.readUInt8(i++) if (vers > 3) throw new Error('Only supports BMFont Binary v3 (BMFont App v1.10)') - + var target = { kernings: [], chars: [] } for (var b=0; b<5; b++) i += readBlock(target, buf, i) @@ -3241,7 +3241,7 @@ function readBlock(target, buf, i) { i += 4 switch(blockID) { - case 1: + case 1: target.info = readInfo(buf, i) break case 2: @@ -3269,11 +3269,11 @@ function readInfo(buf, i) { info.unicode = (bitField >> 6) & 1 info.italic = (bitField >> 5) & 1 info.bold = (bitField >> 4) & 1 - - //fixedHeight is only mentioned in binary spec + + //fixedHeight is only mentioned in binary spec if ((bitField >> 3) & 1) info.fixedHeight = 1 - + info.charset = buf.readUInt8(i+3) || '' info.stretchH = buf.readUInt16LE(i+4) info.aa = buf.readUInt8(i+6) @@ -3359,7 +3359,7 @@ function readKernings(buf, i, blockSize) { function readNameNT(buf, offset) { var pos=offset for (; pos>0),o="attached",u="detached",a="extends",f="ADDITION",l="MODIFICATION",c="REMOVAL",h="DOMAttrModified",p="DOMContentLoaded",d="DOMSubtreeModified",v="<",m="=",g=/^[A-Z][A-Z0-9]*(?:-[A-Z0-9]+)+$/,y=["ANNOTATION-XML","COLOR-PROFILE","FONT-FACE","FONT-FACE-SRC","FONT-FACE-URI","FONT-FACE-FORMAT","FONT-FACE-NAME","MISSING-GLYPH"],b=[],w=[],E="",S=n.documentElement,x=b.indexOf||function(e){for(var t=this.length;t--&&this[t]!==e;);return t},T=r.prototype,N=T.hasOwnProperty,C=T.isPrototypeOf,k=r.defineProperty,L=r.getOwnPropertyDescriptor,A=r.getOwnPropertyNames,O=r.getPrototypeOf,M=r.setPrototypeOf,_=!!r.__proto__,D=r.create||function yt(e){return e?(yt.prototype=e,new yt):this},P=M||(_?function(e,t){return e.__proto__=t,e}:A&&L?function(){function e(e,t){for(var n,r=A(t),i=0,s=r.length;i

\n *\n * @param {function} onClick - click event handler\n * @returns {Element} Wrapper
.\n */\nfunction createEnterVRButton (onClick) {\n var vrButton;\n var wrapper;\n\n // Create elements.\n wrapper = document.createElement('div');\n wrapper.classList.add(ENTER_VR_CLASS);\n wrapper.setAttribute(constants.AFRAME_INJECTED, '');\n vrButton = document.createElement('button');\n vrButton.className = ENTER_VR_BTN_CLASS;\n vrButton.setAttribute('title',\n 'Enter VR mode with a headset or fullscreen mode on a desktop. ' +\n 'Visit https://webvr.rocks or https://webvr.info for more information.');\n vrButton.setAttribute(constants.AFRAME_INJECTED, '');\n\n // Insert elements.\n wrapper.appendChild(vrButton);\n vrButton.addEventListener('click', function (evt) {\n onClick();\n evt.stopPropagation();\n });\n return wrapper;\n}\n\n/**\n * Creates a modal dialog to request the user to switch to landscape orientation.\n *\n * @param {function} onClick - click event handler\n * @returns {Element} Wrapper
.\n */\nfunction createOrientationModal (onClick) {\n var modal = document.createElement('div');\n modal.className = ORIENTATION_MODAL_CLASS;\n modal.classList.add(HIDDEN_CLASS);\n modal.setAttribute(constants.AFRAME_INJECTED, '');\n\n var exit = document.createElement('button');\n exit.setAttribute(constants.AFRAME_INJECTED, '');\n exit.innerHTML = 'Exit VR';\n\n // Exit VR on close.\n exit.addEventListener('click', onClick);\n\n modal.appendChild(exit);\n\n return modal;\n}\n", "var component = require('../core/component');\nvar THREE = require('../lib/three');\nvar bind = require('../utils/bind');\nvar registerComponent = component.registerComponent;\n\n/**\n * Shadow component.\n *\n * When applied to an entity, that entity's geometry and any descendants will cast or receive\n * shadows as specified by the `cast` and `receive` properties.\n */\nmodule.exports.Component = registerComponent('shadow', {\n schema: {\n cast: {default: true},\n receive: {default: true}\n },\n\n init: function () {\n this.onMeshChanged = bind(this.update, this);\n this.el.addEventListener('object3dset', this.onMeshChanged);\n this.system.setShadowMapEnabled(true);\n },\n\n update: function () {\n var data = this.data;\n this.updateDescendants(data.cast, data.receive);\n },\n\n remove: function () {\n var el = this.el;\n el.removeEventListener('object3dset', this.onMeshChanged);\n this.updateDescendants(false, false);\n },\n\n updateDescendants: function (cast, receive) {\n var sceneEl = this.el.sceneEl;\n this.el.object3D.traverse(function (node) {\n if (!(node instanceof THREE.Mesh)) { return; }\n\n node.castShadow = cast;\n node.receiveShadow = receive;\n\n // If scene has already rendered, materials must be updated.\n if (sceneEl.hasLoaded && node.material) {\n var materials = Array.isArray(node.material) ? node.material : [node.material];\n for (var i = 0; i < materials.length; i++) {\n materials[i].needsUpdate = true;\n }\n }\n });\n }\n});\n", - "var registerComponent = require('../core/component').registerComponent;\nvar debug = require('../utils/debug');\nvar bind = require('../utils/bind');\nvar THREE = require('../lib/three');\n\nvar warn = debug('components:sound:warn');\n\n/**\n * Sound component.\n */\nmodule.exports.Component = registerComponent('sound', {\n schema: {\n autoplay: {default: false},\n distanceModel: {default: 'inverse', oneOf: ['linear', 'inverse', 'exponential']},\n loop: {default: false},\n maxDistance: {default: 10000},\n on: {default: ''},\n poolSize: {default: 1},\n positional: {default: true},\n refDistance: {default: 1},\n rolloffFactor: {default: 1},\n src: {type: 'audio'},\n volume: {default: 1}\n },\n\n multiple: true,\n\n init: function () {\n this.listener = null;\n this.audioLoader = new THREE.AudioLoader();\n this.pool = new THREE.Group();\n this.loaded = false;\n this.mustPlay = false;\n this.playSound = bind(this.playSound, this);\n },\n\n update: function (oldData) {\n var data = this.data;\n var i;\n var sound;\n var srcChanged = data.src !== oldData.src;\n\n // Create new sound if not yet created or changing `src`.\n if (srcChanged) {\n if (!data.src) {\n warn('Audio source was not specified with `src`');\n return;\n }\n this.setupSound();\n }\n\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (data.positional) {\n sound.setDistanceModel(data.distanceModel);\n sound.setMaxDistance(data.maxDistance);\n sound.setRefDistance(data.refDistance);\n sound.setRolloffFactor(data.rolloffFactor);\n }\n sound.setLoop(data.loop);\n sound.setVolume(data.volume);\n sound.isPaused = false;\n }\n\n if (data.on !== oldData.on) {\n this.updateEventListener(oldData.on);\n }\n\n // All sound values set. Load in `src`.\n if (srcChanged) {\n var self = this;\n\n this.loaded = false;\n this.audioLoader.load(data.src, function (buffer) {\n for (i = 0; i < self.pool.children.length; i++) {\n sound = self.pool.children[i];\n sound.setBuffer(buffer);\n }\n self.loaded = true;\n\n // Remove this key from cache, otherwise we can't play it again\n THREE.Cache.remove(data.src);\n if (self.data.autoplay || self.mustPlay) { self.playSound(); }\n self.el.emit('sound-loaded', self.evtDetail, false);\n });\n }\n },\n\n pause: function () {\n this.stopSound();\n this.removeEventListener();\n },\n\n play: function () {\n if (this.data.autoplay) { this.playSound(); }\n this.updateEventListener();\n },\n\n remove: function () {\n var i;\n var sound;\n\n this.removeEventListener();\n this.el.removeObject3D(this.attrName);\n\n try {\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n sound.disconnect();\n }\n } catch (e) {\n // disconnect() will throw if it was never connected initially.\n warn('Audio source not properly disconnected');\n }\n },\n\n /**\n * Update listener attached to the user defined on event.\n */\n updateEventListener: function (oldEvt) {\n var el = this.el;\n if (oldEvt) { el.removeEventListener(oldEvt, this.playSound); }\n el.addEventListener(this.data.on, this.playSound);\n },\n\n removeEventListener: function () {\n this.el.removeEventListener(this.data.on, this.playSound);\n },\n\n /**\n * Removes current sound object, creates new sound object, adds to entity.\n *\n * @returns {object} sound\n */\n setupSound: function () {\n var self = this;\n var el = this.el;\n var i;\n var sceneEl = el.sceneEl;\n var sound;\n\n if (this.pool.children.length > 0) {\n this.stopSound();\n el.removeObject3D('sound');\n }\n\n // Only want one AudioListener. Cache it on the scene.\n var listener = this.listener = sceneEl.audioListener || new THREE.AudioListener();\n sceneEl.audioListener = listener;\n\n if (sceneEl.camera) {\n sceneEl.camera.add(listener);\n }\n\n // Wait for camera if necessary.\n sceneEl.addEventListener('camera-set-active', function (evt) {\n evt.detail.cameraEl.getObject3D('camera').add(listener);\n });\n\n // Create [poolSize] audio instances and attach them to pool\n this.pool = new THREE.Group();\n for (i = 0; i < this.data.poolSize; i++) {\n sound = this.data.positional\n ? new THREE.PositionalAudio(listener)\n : new THREE.Audio(listener);\n this.pool.add(sound);\n }\n el.setObject3D(this.attrName, this.pool);\n\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n sound.onEnded = function () {\n sound.isPlaying = false;\n el.emit('sound-ended', self.evtDetail, false);\n };\n }\n },\n\n /**\n * Pause all the sounds in the pool.\n */\n pauseSound: function () {\n var i;\n var sound;\n\n this.isPlaying = false;\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (!sound.source || !sound.source.buffer || !sound.isPlaying || sound.isPaused) {\n continue;\n }\n sound.isPaused = true;\n sound.pause();\n }\n },\n\n /**\n * Look for an unused sound in the pool and play it if found.\n */\n playSound: function (processSound) {\n var found;\n var i;\n var sound;\n\n if (!this.loaded) {\n warn('Sound not loaded yet. It will be played once it finished loading');\n this.mustPlay = true;\n return;\n }\n\n found = false;\n this.isPlaying = true;\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (!sound.isPlaying && sound.buffer && !found) {\n if (processSound) { processSound(sound); }\n sound.play();\n sound.isPaused = false;\n found = true;\n continue;\n }\n }\n\n if (!found) {\n warn('All the sounds are playing. If you need to play more sounds simultaneously ' +\n 'consider increasing the size of pool with the `poolSize` attribute.', this.el);\n return;\n }\n\n this.mustPlay = false;\n },\n\n /**\n * Stop all the sounds in the pool.\n */\n stopSound: function () {\n var i;\n var sound;\n this.isPlaying = false;\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (!sound.source || !sound.source.buffer) { return; }\n sound.stop();\n }\n }\n});\n", + "var registerComponent = require('../core/component').registerComponent;\nvar debug = require('../utils/debug');\nvar bind = require('../utils/bind');\nvar THREE = require('../lib/three');\n\nvar warn = debug('components:sound:warn');\n\n/**\n * Sound component.\n */\nmodule.exports.Component = registerComponent('sound', {\n schema: {\n autoplay: {default: false},\n distanceModel: {default: 'inverse', oneOf: ['linear', 'inverse', 'exponential']},\n loop: {default: false},\n maxDistance: {default: 10000},\n on: {default: ''},\n poolSize: {default: 1},\n positional: {default: true},\n refDistance: {default: 1},\n rolloffFactor: {default: 1},\n src: {type: 'audio'},\n volume: {default: 1}\n },\n\n multiple: true,\n\n init: function () {\n this.listener = null;\n this.audioLoader = new THREE.AudioLoader();\n this.pool = new THREE.Group();\n this.loaded = false;\n this.mustPlay = false;\n this.playSound = bind(this.playSound, this);\n },\n\n update: function (oldData) {\n var data = this.data;\n var i;\n var sound;\n var srcChanged = data.src !== oldData.src;\n\n // Create new sound if not yet created or changing `src`.\n if (srcChanged) {\n if (!data.src) {\n warn('Audio source was not specified with `src`');\n return;\n }\n this.setupSound();\n }\n\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (data.positional) {\n sound.setDistanceModel(data.distanceModel);\n sound.setMaxDistance(data.maxDistance);\n sound.setRefDistance(data.refDistance);\n sound.setRolloffFactor(data.rolloffFactor);\n }\n sound.setLoop(data.loop);\n sound.setVolume(data.volume);\n sound.isPaused = false;\n }\n\n if (data.on !== oldData.on) {\n this.updateEventListener(oldData.on);\n }\n\n // All sound values set. Load in `src`.\n if (srcChanged) {\n var self = this;\n\n this.loaded = false;\n this.audioLoader.load(data.src, function (buffer) {\n for (i = 0; i < self.pool.children.length; i++) {\n sound = self.pool.children[i];\n sound.setBuffer(buffer);\n }\n self.loaded = true;\n\n // Remove this key from cache, otherwise we can't play it again\n THREE.Cache.remove(data.src);\n if (self.data.autoplay || self.mustPlay) { self.playSound(); }\n self.el.emit('sound-loaded', self.evtDetail, false);\n });\n }\n },\n\n pause: function () {\n this.stopSound();\n this.removeEventListener();\n },\n\n play: function () {\n if (this.data.autoplay) { this.playSound(); }\n this.updateEventListener();\n },\n\n remove: function () {\n var i;\n var sound;\n\n this.removeEventListener();\n this.el.removeObject3D(this.attrName);\n\n try {\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n sound.disconnect();\n }\n } catch (e) {\n // disconnect() will throw if it was never connected initially.\n warn('Audio source not properly disconnected');\n }\n },\n\n /**\n * Update listener attached to the user defined on event.\n */\n updateEventListener: function (oldEvt) {\n var el = this.el;\n if (oldEvt) { el.removeEventListener(oldEvt, this.playSound); }\n el.addEventListener(this.data.on, this.playSound);\n },\n\n removeEventListener: function () {\n this.el.removeEventListener(this.data.on, this.playSound);\n },\n\n /**\n * Removes current sound object, creates new sound object, adds to entity.\n *\n * @returns {object} sound\n */\n setupSound: function () {\n var self = this;\n var el = this.el;\n var i;\n var sceneEl = el.sceneEl;\n var sound;\n\n if (this.pool.children.length > 0) {\n this.stopSound();\n el.removeObject3D('sound');\n }\n\n // Only want one AudioListener. Cache it on the scene.\n var listener = this.listener = sceneEl.audioListener || new THREE.AudioListener();\n sceneEl.audioListener = listener;\n\n if (sceneEl.camera) {\n sceneEl.camera.add(listener);\n }\n\n // Wait for camera if necessary.\n sceneEl.addEventListener('camera-set-active', function (evt) {\n evt.detail.cameraEl.getObject3D('camera').add(listener);\n });\n\n // Create [poolSize] audio instances and attach them to pool\n this.pool = new THREE.Group();\n for (i = 0; i < this.data.poolSize; i++) {\n sound = this.data.positional\n ? new THREE.PositionalAudio(listener)\n : new THREE.Audio(listener);\n this.pool.add(sound);\n }\n el.setObject3D(this.attrName, this.pool);\n\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n sound.onEnded = function () {\n this.isPlaying = false;\n el.emit('sound-ended', self.evtDetail, false);\n };\n }\n },\n\n /**\n * Pause all the sounds in the pool.\n */\n pauseSound: function () {\n var i;\n var sound;\n\n this.isPlaying = false;\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (!sound.source || !sound.source.buffer || !sound.isPlaying || sound.isPaused) {\n continue;\n }\n sound.isPaused = true;\n sound.pause();\n }\n },\n\n /**\n * Look for an unused sound in the pool and play it if found.\n */\n playSound: function (processSound) {\n var found;\n var i;\n var sound;\n\n if (!this.loaded) {\n warn('Sound not loaded yet. It will be played once it finished loading');\n this.mustPlay = true;\n return;\n }\n\n found = false;\n this.isPlaying = true;\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (!sound.isPlaying && sound.buffer && !found) {\n if (processSound) { processSound(sound); }\n sound.play();\n sound.isPaused = false;\n found = true;\n continue;\n }\n }\n\n if (!found) {\n warn('All the sounds are playing. If you need to play more sounds simultaneously ' +\n 'consider increasing the size of pool with the `poolSize` attribute.', this.el);\n return;\n }\n\n this.mustPlay = false;\n },\n\n /**\n * Stop all the sounds in the pool.\n */\n stopSound: function () {\n var i;\n var sound;\n this.isPlaying = false;\n for (i = 0; i < this.pool.children.length; i++) {\n sound = this.pool.children[i];\n if (!sound.source || !sound.source.buffer) { return; }\n sound.stop();\n }\n }\n});\n", "var createTextGeometry = require('three-bmfont-text');\nvar loadBMFont = require('load-bmfont');\n\nvar registerComponent = require('../core/component').registerComponent;\nvar coreShader = require('../core/shader');\nvar THREE = require('../lib/three');\nvar utils = require('../utils/');\n\nvar error = utils.debug('components:text:error');\nvar shaders = coreShader.shaders;\nvar warn = utils.debug('components:text:warn');\n\n// 1 to match other A-Frame default widths.\nvar DEFAULT_WIDTH = 1;\n\n// @bryik set anisotropy to 16. Improves look of large amounts of text when viewed from angle.\nvar MAX_ANISOTROPY = 16;\n\nvar FONT_BASE_URL = 'https://cdn.aframe.io/fonts/';\nvar FONTS = {\n aileronsemibold: FONT_BASE_URL + 'Aileron-Semibold.fnt',\n dejavu: FONT_BASE_URL + 'DejaVu-sdf.fnt',\n exo2bold: FONT_BASE_URL + 'Exo2Bold.fnt',\n exo2semibold: FONT_BASE_URL + 'Exo2SemiBold.fnt',\n kelsonsans: FONT_BASE_URL + 'KelsonSans.fnt',\n monoid: FONT_BASE_URL + 'Monoid.fnt',\n mozillavr: FONT_BASE_URL + 'mozillavr.fnt',\n roboto: FONT_BASE_URL + 'Roboto-msdf.json',\n sourcecodepro: FONT_BASE_URL + 'SourceCodePro.fnt'\n};\nvar MSDF_FONTS = ['roboto'];\nvar DEFAULT_FONT = 'roboto';\nmodule.exports.FONTS = FONTS;\n\nvar cache = new PromiseCache();\nvar fontWidthFactors = {};\nvar textures = {};\n\n// Regular expression for detecting a URLs with a protocol prefix.\nvar protocolRe = /^\\w+:/;\n\n/**\n * SDF-based text component.\n * Based on https://github.com/Jam3/three-bmfont-text.\n *\n * All the stock fonts are for the `sdf` registered shader, an improved version of jam3's\n * original `sdf` shader.\n */\nmodule.exports.Component = registerComponent('text', {\n multiple: true,\n\n schema: {\n align: {type: 'string', default: 'left', oneOf: ['left', 'right', 'center']},\n alphaTest: {default: 0.5},\n // `anchor` defaults to center to match geometries.\n anchor: {default: 'center', oneOf: ['left', 'right', 'center', 'align']},\n baseline: {default: 'center', oneOf: ['top', 'center', 'bottom']},\n color: {type: 'color', default: '#FFF'},\n font: {type: 'string', default: DEFAULT_FONT},\n // `fontImage` defaults to the font name as a .png (e.g., mozillavr.fnt -> mozillavr.png).\n fontImage: {type: 'string'},\n // `height` has no default, will be populated at layout.\n height: {type: 'number'},\n letterSpacing: {type: 'number', default: 0},\n // `lineHeight` defaults to font's `lineHeight` value.\n lineHeight: {type: 'number'},\n // `negate` must be true for fonts generated with older versions of msdfgen (white background).\n negate: {type: 'boolean', default: true},\n opacity: {type: 'number', default: 1.0},\n shader: {default: 'sdf', oneOf: shaders},\n side: {default: 'front', oneOf: ['front', 'back', 'double']},\n tabSize: {default: 4},\n transparent: {default: true},\n value: {type: 'string'},\n whiteSpace: {default: 'normal', oneOf: ['normal', 'pre', 'nowrap']},\n // `width` defaults to geometry width if present, else `DEFAULT_WIDTH`.\n width: {type: 'number'},\n // `wrapCount` units are about one default font character. Wrap roughly at this number.\n wrapCount: {type: 'number', default: 40},\n // `wrapPixels` will wrap using bmfont pixel units (e.g., dejavu's is 32 pixels).\n wrapPixels: {type: 'number'},\n // `xOffset` to add padding.\n xOffset: {type: 'number', default: 0},\n // `yOffset` to adjust generated fonts from tools that may have incorrect metrics.\n yOffset: {type: 'number', default: 0},\n // `zOffset` will provide a small z offset to avoid z-fighting.\n zOffset: {type: 'number', default: 0.001}\n },\n\n init: function () {\n this.shaderData = {};\n this.geometry = createTextGeometry();\n this.createOrUpdateMaterial();\n this.mesh = new THREE.Mesh(this.geometry, this.material);\n this.el.setObject3D(this.attrName, this.mesh);\n },\n\n update: function (oldData) {\n var data = this.data;\n var font = this.currentFont;\n\n if (textures[data.font]) {\n this.texture = textures[data.font];\n } else {\n // Create texture per font.\n this.texture = textures[data.font] = new THREE.Texture();\n this.texture.anisotropy = MAX_ANISOTROPY;\n }\n\n // Update material.\n this.createOrUpdateMaterial();\n\n // New font. `updateFont` will later change data and layout.\n if (oldData.font !== data.font) {\n this.updateFont();\n return;\n }\n\n // Update geometry and layout.\n if (font) {\n this.updateGeometry(this.geometry, font);\n this.updateLayout();\n }\n },\n\n /**\n * Clean up geometry, material, texture, mesh, objects.\n */\n remove: function () {\n this.geometry.dispose();\n this.geometry = null;\n this.el.removeObject3D(this.attrName);\n this.material.dispose();\n this.material = null;\n this.texture.dispose();\n this.texture = null;\n if (this.shaderObject) {\n delete this.shaderObject;\n }\n },\n\n /**\n * Update the shader of the material.\n */\n createOrUpdateMaterial: function () {\n var data = this.data;\n var hasChangedShader;\n var material = this.material;\n var NewShader;\n var shaderData = this.shaderData;\n var shaderName;\n\n // Infer shader if using a stock font (or from `-msdf` filename convention).\n shaderName = data.shader;\n if (MSDF_FONTS.indexOf(data.font) !== -1 || data.font.indexOf('-msdf.') >= 0) {\n shaderName = 'msdf';\n } else if (data.font in FONTS && MSDF_FONTS.indexOf(data.font) === -1) {\n shaderName = 'sdf';\n }\n\n hasChangedShader = (this.shaderObject && this.shaderObject.name) !== shaderName;\n\n shaderData.alphaTest = data.alphaTest;\n shaderData.color = data.color;\n shaderData.map = this.texture;\n shaderData.opacity = data.opacity;\n shaderData.side = parseSide(data.side);\n shaderData.transparent = data.transparent;\n shaderData.negate = data.negate;\n\n // Shader has not changed, do an update.\n if (!hasChangedShader) {\n // Update shader material.\n this.shaderObject.update(shaderData);\n // Apparently, was not set on `init` nor `update`.\n material.transparent = shaderData.transparent;\n material.side = shaderData.side;\n return;\n }\n\n // Shader has changed. Create a shader material.\n NewShader = createShader(this.el, shaderName, shaderData);\n this.material = NewShader.material;\n this.shaderObject = NewShader.shader;\n\n // Set new shader material.\n this.material.side = shaderData.side;\n if (this.mesh) { this.mesh.material = this.material; }\n },\n\n /**\n * Load font for geometry, load font image for material, and apply.\n */\n updateFont: function () {\n var data = this.data;\n var el = this.el;\n var fontSrc;\n var geometry = this.geometry;\n var self = this;\n\n if (!data.font) { warn('No font specified. Using the default font.'); }\n\n // Make invisible during font swap.\n this.mesh.visible = false;\n\n // Look up font URL to use, and perform cached load.\n fontSrc = this.lookupFont(data.font || DEFAULT_FONT) || data.font;\n cache.get(fontSrc, function doLoadFont () {\n return loadFont(fontSrc, data.yOffset);\n }).then(function setFont (font) {\n var fontImgSrc;\n\n if (font.pages.length !== 1) {\n throw new Error('Currently only single-page bitmap fonts are supported.');\n }\n\n if (!fontWidthFactors[fontSrc]) {\n font.widthFactor = fontWidthFactors[font] = computeFontWidthFactor(font);\n }\n\n // Update geometry given font metrics.\n self.updateGeometry(geometry, font);\n\n // Set font and update layout.\n self.currentFont = font;\n self.updateLayout();\n\n // Look up font image URL to use, and perform cached load.\n fontImgSrc = self.getFontImageSrc();\n cache.get(fontImgSrc, function () {\n return loadTexture(fontImgSrc);\n }).then(function (image) {\n // Make mesh visible and apply font image as texture.\n var texture = self.texture;\n texture.image = image;\n texture.needsUpdate = true;\n textures[data.font] = texture;\n self.texture = texture;\n self.mesh.visible = true;\n el.emit('textfontset', {font: data.font, fontObj: font});\n }).catch(function (err) {\n error(err);\n throw err;\n });\n }).catch(function (err) {\n error(err);\n throw err;\n });\n },\n\n getFontImageSrc: function () {\n if (this.data.fontImage) { return this.data.fontImage; }\n var fontSrc = this.lookupFont(this.data.font || DEFAULT_FONT) || this.data.font;\n var imageSrc = this.currentFont.pages[0];\n // If the image URL contains a non-HTTP(S) protocol, assume it's an absolute\n // path on disk and try to infer the path from the font source instead.\n if (imageSrc.match(protocolRe) && imageSrc.indexOf('http') !== 0) {\n return fontSrc.replace(/(\\.fnt)|(\\.json)/, '.png');\n }\n return THREE.LoaderUtils.extractUrlBase(fontSrc) + imageSrc;\n },\n\n /**\n * Update layout with anchor, alignment, baseline, and considering any meshes.\n */\n updateLayout: function () {\n var anchor;\n var baseline;\n var el = this.el;\n var data = this.data;\n var geometry = this.geometry;\n var geometryComponent;\n var height;\n var layout;\n var mesh = this.mesh;\n var textRenderWidth;\n var textScale;\n var width;\n var x;\n var y;\n\n if (!geometry.layout) { return; }\n\n // Determine width to use (defined width, geometry's width, or default width).\n geometryComponent = el.getAttribute('geometry');\n width = data.width || (geometryComponent && geometryComponent.width) || DEFAULT_WIDTH;\n\n // Determine wrap pixel count. Either specified or by experimental fudge factor.\n // Note that experimental factor will never be correct for variable width fonts.\n textRenderWidth = computeWidth(data.wrapPixels, data.wrapCount,\n this.currentFont.widthFactor);\n textScale = width / textRenderWidth;\n\n // Determine height to use.\n layout = geometry.layout;\n height = textScale * (layout.height + layout.descender);\n\n // Update geometry dimensions to match text layout if width and height are set to 0.\n // For example, scales a plane to fit text.\n if (geometryComponent) {\n if (!geometryComponent.width) { el.setAttribute('geometry', 'width', width); }\n if (!geometryComponent.height) { el.setAttribute('geometry', 'height', height); }\n }\n\n // Calculate X position to anchor text left, center, or right.\n anchor = data.anchor === 'align' ? data.align : data.anchor;\n if (anchor === 'left') {\n x = 0;\n } else if (anchor === 'right') {\n x = -1 * layout.width;\n } else if (anchor === 'center') {\n x = -1 * layout.width / 2;\n } else {\n throw new TypeError('Invalid text.anchor property value', anchor);\n }\n\n // Calculate Y position to anchor text top, center, or bottom.\n baseline = data.baseline;\n if (baseline === 'bottom') {\n y = 0;\n } else if (baseline === 'top') {\n y = -1 * layout.height + layout.ascender;\n } else if (baseline === 'center') {\n y = -1 * layout.height / 2;\n } else {\n throw new TypeError('Invalid text.baseline property value', baseline);\n }\n\n // Position and scale mesh to apply layout.\n mesh.position.x = x * textScale + data.xOffset;\n mesh.position.y = y * textScale;\n // Place text slightly in front to avoid Z-fighting.\n mesh.position.z = data.zOffset;\n mesh.scale.set(textScale, -1 * textScale, textScale);\n },\n\n /**\n * Grab font from the constant.\n * Set as a method for test stubbing purposes.\n */\n lookupFont: function (key) {\n return FONTS[key];\n },\n\n /**\n * Update the text geometry using `three-bmfont-text.update`.\n */\n updateGeometry: (function () {\n var geometryUpdateBase = {};\n var geometryUpdateData = {};\n var newLineRegex = /\\\\n/g;\n var tabRegex = /\\\\t/g;\n\n return function (geometry, font) {\n var data = this.data;\n\n geometryUpdateData.font = font;\n geometryUpdateData.lineHeight = data.lineHeight && isFinite(data.lineHeight)\n ? data.lineHeight\n : font.common.lineHeight;\n geometryUpdateData.text = data.value.toString().replace(newLineRegex, '\\n')\n .replace(tabRegex, '\\t');\n geometryUpdateData.width = computeWidth(data.wrapPixels, data.wrapCount,\n font.widthFactor);\n geometry.update(utils.extend(geometryUpdateBase, data, geometryUpdateData));\n };\n })()\n});\n\n/**\n * Due to using negative scale, we return the opposite side specified.\n * https://github.com/mrdoob/three.js/pull/12787/\n */\nfunction parseSide (side) {\n switch (side) {\n case 'back': {\n return THREE.FrontSide;\n }\n case 'double': {\n return THREE.DoubleSide;\n }\n default: {\n return THREE.BackSide;\n }\n }\n}\n\n/**\n * @returns {Promise}\n */\nfunction loadFont (src, yOffset) {\n return new Promise(function (resolve, reject) {\n loadBMFont(src, function (err, font) {\n if (err) {\n error('Error loading font', src);\n reject(err);\n return;\n }\n\n // Fix negative Y offsets for Roboto MSDF font from tool. Experimentally determined.\n if (src.indexOf('/Roboto-msdf.json') >= 0) { yOffset = 30; }\n if (yOffset) { font.chars.map(function doOffset (ch) { ch.yoffset += yOffset; }); }\n\n resolve(font);\n });\n });\n}\n\n/**\n * @returns {Promise}\n */\nfunction loadTexture (src) {\n return new Promise(function (resolve, reject) {\n new THREE.ImageLoader().load(src, function (image) {\n resolve(image);\n }, undefined, function () {\n error('Error loading font image', src);\n reject(null);\n });\n });\n}\n\nfunction createShader (el, shaderName, data) {\n var shader;\n var shaderObject;\n\n // Set up Shader.\n shaderObject = new shaders[shaderName].Shader();\n shaderObject.el = el;\n shaderObject.init(data);\n shaderObject.update(data);\n\n // Get material.\n shader = shaderObject.material;\n // Apparently, was not set on `init` nor `update`.\n shader.transparent = data.transparent;\n\n return {\n material: shader,\n shader: shaderObject\n };\n}\n\n/**\n * Determine wrap pixel count. Either specified or by experimental fudge factor.\n * Note that experimental factor will never be correct for variable width fonts.\n */\nfunction computeWidth (wrapPixels, wrapCount, widthFactor) {\n return wrapPixels || ((0.5 + wrapCount) * widthFactor);\n}\n\n/**\n * Compute default font width factor to use.\n */\nfunction computeFontWidthFactor (font) {\n var sum = 0;\n var digitsum = 0;\n var digits = 0;\n font.chars.map(function (ch) {\n sum += ch.xadvance;\n if (ch.id >= 48 && ch.id <= 57) {\n digits++;\n digitsum += ch.xadvance;\n }\n });\n return digits ? digitsum / digits : sum / font.chars.length;\n}\n\n/**\n * Get or create a promise given a key and promise generator.\n * @todo Move to a utility and use in other parts of A-Frame.\n */\nfunction PromiseCache () {\n var cache = this.cache = {};\n\n this.get = function (key, promiseGenerator) {\n if (key in cache) {\n return cache[key];\n }\n cache[key] = promiseGenerator();\n return cache[key];\n };\n}\n", "var registerComponent = require('../core/component').registerComponent;\nvar controllerUtils = require('../utils/tracked-controls');\nvar DEFAULT_CAMERA_HEIGHT = require('../constants').DEFAULT_CAMERA_HEIGHT;\nvar THREE = require('../lib/three');\n\nvar DEFAULT_HANDEDNESS = require('../constants').DEFAULT_HANDEDNESS;\n// Vector from eyes to elbow (divided by user height).\nvar EYES_TO_ELBOW = {x: 0.175, y: -0.3, z: -0.03};\n// Vector from eyes to elbow (divided by user height).\nvar FOREARM = {x: 0, y: 0, z: -0.175};\n\n// Due to unfortunate name collision, add empty touches array to avoid Daydream error.\nvar EMPTY_DAYDREAM_TOUCHES = {touches: []};\n\nvar EVENTS = {\n AXISMOVE: 'axismove',\n BUTTONCHANGED: 'buttonchanged',\n BUTTONDOWN: 'buttondown',\n BUTTONUP: 'buttonup',\n TOUCHSTART: 'touchstart',\n TOUCHEND: 'touchend'\n};\n\n/**\n * Tracked controls component.\n * Wrap the gamepad API for pose and button states.\n * Select the appropriate controller and apply pose to the entity.\n * Observe button states and emit appropriate events.\n *\n * @property {number} controller - Index of controller in array returned by Gamepad API.\n * Only used if hand property is not set.\n * @property {string} id - Selected controller among those returned by Gamepad API.\n * @property {number} hand - If multiple controllers found with id, choose the one with the\n * given value for hand. If set, we ignore 'controller' property\n */\nmodule.exports.Component = registerComponent('tracked-controls', {\n schema: {\n controller: {default: 0},\n id: {type: 'string', default: ''},\n hand: {type: 'string', default: ''},\n idPrefix: {type: 'string', default: ''},\n orientationOffset: {type: 'vec3'},\n // Arm model parameters when not 6DoF.\n armModel: {default: true},\n headElement: {type: 'selector'}\n },\n\n init: function () {\n this.axis = [0, 0, 0];\n this.buttonStates = {};\n this.changedAxes = [];\n this.targetControllerNumber = this.data.controller;\n\n this.axisMoveEventDetail = {axis: this.axis, changed: this.changedAxes};\n this.deltaControllerPosition = new THREE.Vector3();\n this.controllerQuaternion = new THREE.Quaternion();\n this.controllerEuler = new THREE.Euler();\n\n this.updateGamepad();\n\n this.buttonEventDetails = {};\n },\n\n tick: function (time, delta) {\n var mesh = this.el.getObject3D('mesh');\n // Update mesh animations.\n if (mesh && mesh.update) { mesh.update(delta / 1000); }\n this.updateGamepad();\n this.updatePose();\n this.updateButtons();\n },\n\n /**\n * Return default user height to use for non-6DOF arm model.\n */\n defaultUserHeight: function () {\n return DEFAULT_CAMERA_HEIGHT;\n },\n\n /**\n * Return head element to use for non-6DOF arm model.\n */\n getHeadElement: function () {\n return this.data.headElement || this.el.sceneEl.camera.el;\n },\n\n /**\n * Handle update controller match criteria (such as `id`, `idPrefix`, `hand`, `controller`)\n */\n updateGamepad: function () {\n var data = this.data;\n var controller = controllerUtils.findMatchingController(\n this.system.controllers,\n data.id,\n data.idPrefix,\n data.hand,\n data.controller\n );\n\n this.controller = controller;\n },\n\n /**\n * Applies an artificial arm model to simulate elbow to wrist positioning\n * based on the orientation of the controller.\n *\n * @param {object} controllerPosition - Existing vector to update with controller position.\n */\n applyArmModel: function (controllerPosition) {\n // Use controllerPosition and deltaControllerPosition to avoid creating variables.\n var controller = this.controller;\n var controllerEuler = this.controllerEuler;\n var controllerQuaternion = this.controllerQuaternion;\n var deltaControllerPosition = this.deltaControllerPosition;\n var hand;\n var headEl;\n var headObject3D;\n var pose;\n var userHeight;\n\n headEl = this.getHeadElement();\n headObject3D = headEl.object3D;\n userHeight = this.defaultUserHeight();\n\n pose = controller.pose;\n hand = (controller ? controller.hand : undefined) || DEFAULT_HANDEDNESS;\n\n // Use camera position as head position.\n controllerPosition.copy(headObject3D.position);\n // Set offset for degenerate \"arm model\" to elbow.\n deltaControllerPosition.set(\n EYES_TO_ELBOW.x * (hand === 'left' ? -1 : hand === 'right' ? 1 : 0),\n EYES_TO_ELBOW.y, // Lower than our eyes.\n EYES_TO_ELBOW.z); // Slightly out in front.\n // Scale offset by user height.\n deltaControllerPosition.multiplyScalar(userHeight);\n // Apply camera Y rotation (not X or Z, so you can look down at your hand).\n deltaControllerPosition.applyAxisAngle(headObject3D.up, headObject3D.rotation.y);\n // Apply rotated offset to position.\n controllerPosition.add(deltaControllerPosition);\n\n // Set offset for degenerate \"arm model\" forearm. Forearm sticking out from elbow.\n deltaControllerPosition.set(FOREARM.x, FOREARM.y, FOREARM.z);\n // Scale offset by user height.\n deltaControllerPosition.multiplyScalar(userHeight);\n // Apply controller X/Y rotation (tilting up/down/left/right is usually moving the arm).\n if (pose.orientation) {\n controllerQuaternion.fromArray(pose.orientation);\n } else {\n controllerQuaternion.copy(headObject3D.quaternion);\n }\n controllerEuler.setFromQuaternion(controllerQuaternion);\n controllerEuler.set(controllerEuler.x, controllerEuler.y, 0);\n deltaControllerPosition.applyEuler(controllerEuler);\n // Apply rotated offset to position.\n controllerPosition.add(deltaControllerPosition);\n },\n\n /**\n * Read pose from controller (from Gamepad API), apply transforms, apply to entity.\n */\n updatePose: function () {\n var controller = this.controller;\n var data = this.data;\n var object3D = this.el.object3D;\n var pose;\n var vrDisplay = this.system.vrDisplay;\n var standingMatrix;\n\n if (!controller) { return; }\n\n // Compose pose from Gamepad.\n pose = controller.pose;\n\n if (pose.position) {\n object3D.position.fromArray(pose.position);\n } else {\n // Controller not 6DOF, apply arm model.\n if (data.armModel) { this.applyArmModel(object3D.position); }\n }\n\n if (pose.orientation) {\n object3D.quaternion.fromArray(pose.orientation);\n }\n\n // Apply transforms, if 6DOF and in VR.\n if (vrDisplay && pose.position) {\n standingMatrix = this.el.sceneEl.camera.el.components['look-controls'].controls.getStandingMatrix();\n object3D.matrixAutoUpdate = false;\n object3D.matrix.compose(object3D.position, object3D.quaternion, object3D.scale);\n object3D.matrix.multiplyMatrices(standingMatrix, object3D.matrix);\n object3D.matrix.decompose(object3D.position, object3D.quaternion, object3D.scale);\n }\n\n object3D.rotateX(this.data.orientationOffset.x * THREE.Math.DEG2RAD);\n object3D.rotateY(this.data.orientationOffset.y * THREE.Math.DEG2RAD);\n object3D.rotateZ(this.data.orientationOffset.z * THREE.Math.DEG2RAD);\n\n object3D.updateMatrix();\n object3D.matrixWorldNeedsUpdate = true;\n },\n\n /**\n * Handle button changes including axes, presses, touches, values.\n */\n updateButtons: function () {\n var buttonState;\n var controller = this.controller;\n var id;\n\n if (!controller) { return; }\n\n // Check every button.\n for (id = 0; id < controller.buttons.length; ++id) {\n // Initialize button state.\n if (!this.buttonStates[id]) {\n this.buttonStates[id] = {pressed: false, touched: false, value: 0};\n }\n if (!this.buttonEventDetails[id]) {\n this.buttonEventDetails[id] = {id: id, state: this.buttonStates[id]};\n }\n\n buttonState = controller.buttons[id];\n this.handleButton(id, buttonState);\n }\n // Check axes.\n this.handleAxes();\n },\n\n /**\n * Handle presses and touches for a single button.\n *\n * @param {number} id - Index of button in Gamepad button array.\n * @param {number} buttonState - Value of button state from 0 to 1.\n * @returns {boolean} Whether button has changed in any way.\n */\n handleButton: function (id, buttonState) {\n var changed;\n changed = this.handlePress(id, buttonState) |\n this.handleTouch(id, buttonState) |\n this.handleValue(id, buttonState);\n if (!changed) { return false; }\n this.el.emit(EVENTS.BUTTONCHANGED, this.buttonEventDetails[id], false);\n return true;\n },\n\n /**\n * An axis is an array of values from -1 (up, left) to 1 (down, right).\n * Compare each component of the axis to the previous value to determine change.\n *\n * @returns {boolean} Whether axes changed.\n */\n handleAxes: function () {\n var changed = false;\n var controllerAxes = this.controller.axes;\n var i;\n var previousAxis = this.axis;\n var changedAxes = this.changedAxes;\n\n // Check if axis changed.\n this.changedAxes.length = 0;\n for (i = 0; i < controllerAxes.length; ++i) {\n changedAxes.push(previousAxis[i] !== controllerAxes[i]);\n if (changedAxes[i]) { changed = true; }\n }\n if (!changed) { return false; }\n\n this.axis.length = 0;\n for (i = 0; i < controllerAxes.length; i++) {\n this.axis.push(controllerAxes[i]);\n }\n this.el.emit(EVENTS.AXISMOVE, this.axisMoveEventDetail, false);\n return true;\n },\n\n /**\n * Determine whether a button press has occured and emit events as appropriate.\n *\n * @param {string} id - ID of the button to check.\n * @param {object} buttonState - State of the button to check.\n * @returns {boolean} Whether button press state changed.\n */\n handlePress: function (id, buttonState) {\n var evtName;\n var previousButtonState = this.buttonStates[id];\n\n // Not changed.\n if (buttonState.pressed === previousButtonState.pressed) { return false; }\n\n evtName = buttonState.pressed ? EVENTS.BUTTONDOWN : EVENTS.BUTTONUP;\n this.el.emit(evtName, this.buttonEventDetails[id], false);\n previousButtonState.pressed = buttonState.pressed;\n return true;\n },\n\n /**\n * Determine whether a button touch has occured and emit events as appropriate.\n *\n * @param {string} id - ID of the button to check.\n * @param {object} buttonState - State of the button to check.\n * @returns {boolean} Whether button touch state changed.\n */\n handleTouch: function (id, buttonState) {\n var evtName;\n var previousButtonState = this.buttonStates[id];\n\n // Not changed.\n if (buttonState.touched === previousButtonState.touched) { return false; }\n\n evtName = buttonState.touched ? EVENTS.TOUCHSTART : EVENTS.TOUCHEND;\n this.el.emit(evtName, this.buttonEventDetails[id], false, EMPTY_DAYDREAM_TOUCHES);\n previousButtonState.touched = buttonState.touched;\n return true;\n },\n\n /**\n * Determine whether a button value has changed.\n *\n * @param {string} id - Id of the button to check.\n * @param {object} buttonState - State of the button to check.\n * @returns {boolean} Whether button value changed.\n */\n handleValue: function (id, buttonState) {\n var previousButtonState = this.buttonStates[id];\n\n // Not changed.\n if (buttonState.value === previousButtonState.value) { return false; }\n\n previousButtonState.value = buttonState.value;\n return true;\n }\n});\n", "var registerComponent = require('../core/component').registerComponent;\n\n/**\n * Visibility component.\n */\nmodule.exports.Component = registerComponent('visible', {\n schema: {default: true},\n\n update: function () {\n this.el.object3D.visible = this.data;\n }\n});\n", @@ -361,7 +361,7 @@ "var registerGeometry = require('../core/geometry').registerGeometry;\nvar THREE = require('../lib/three');\n\nvar degToRad = THREE.Math.degToRad;\n\nregisterGeometry('torus', {\n schema: {\n arc: {default: 360},\n radius: {default: 1, min: 0},\n radiusTubular: {default: 0.2, min: 0},\n segmentsRadial: {default: 36, min: 2, type: 'int'},\n segmentsTubular: {default: 32, min: 3, type: 'int'}\n },\n\n init: function (data) {\n this.geometry = new THREE.TorusGeometry(\n data.radius, data.radiusTubular * 2, data.segmentsRadial, data.segmentsTubular,\n degToRad(data.arc));\n }\n});\n", "var registerGeometry = require('../core/geometry').registerGeometry;\nvar THREE = require('../lib/three');\n\nregisterGeometry('torusKnot', {\n schema: {\n p: {default: 2, min: 1},\n q: {default: 3, min: 1},\n radius: {default: 1, min: 0},\n radiusTubular: {default: 0.2, min: 0},\n segmentsRadial: {default: 8, min: 3, type: 'int'},\n segmentsTubular: {default: 100, min: 3, type: 'int'}\n },\n\n init: function (data) {\n this.geometry = new THREE.TorusKnotGeometry(\n data.radius, data.radiusTubular * 2, data.segmentsTubular, data.segmentsRadial,\n data.p, data.q);\n }\n});\n", "var registerGeometry = require('../core/geometry').registerGeometry;\nvar THREE = require('../lib/three');\n\nvar quaternion = new THREE.Quaternion();\nvar rotateVector = new THREE.Vector3(0, 0, 1);\nvar uvMinVector = new THREE.Vector2();\nvar uvMaxVector = new THREE.Vector2();\nvar uvScaleVector = new THREE.Vector2();\n\nregisterGeometry('triangle', {\n schema: {\n vertexA: {type: 'vec3', default: {x: 0, y: 0.5, z: 0}},\n vertexB: {type: 'vec3', default: {x: -0.5, y: -0.5, z: 0}},\n vertexC: {type: 'vec3', default: {x: 0.5, y: -0.5, z: 0}}\n },\n\n init: function (data) {\n var geometry;\n var normal;\n var triangle;\n var uvA;\n var uvB;\n var uvC;\n\n triangle = new THREE.Triangle();\n triangle.a.set(data.vertexA.x, data.vertexA.y, data.vertexA.z);\n triangle.b.set(data.vertexB.x, data.vertexB.y, data.vertexB.z);\n triangle.c.set(data.vertexC.x, data.vertexC.y, data.vertexC.z);\n normal = triangle.getNormal(new THREE.Vector3());\n\n // Rotate the 3D triangle to be parallel to XY plane.\n quaternion.setFromUnitVectors(normal, rotateVector);\n uvA = triangle.a.clone().applyQuaternion(quaternion);\n uvB = triangle.b.clone().applyQuaternion(quaternion);\n uvC = triangle.c.clone().applyQuaternion(quaternion);\n\n // Compute UVs.\n // Normalize x/y values of UV so they are within 0 to 1.\n uvMinVector.set(Math.min(uvA.x, uvB.x, uvC.x), Math.min(uvA.y, uvB.y, uvC.y));\n uvMaxVector.set(Math.max(uvA.x, uvB.x, uvC.x), Math.max(uvA.y, uvB.y, uvC.y));\n uvScaleVector.set(0, 0).subVectors(uvMaxVector, uvMinVector);\n uvA = new THREE.Vector2().subVectors(uvA, uvMinVector).divide(uvScaleVector);\n uvB = new THREE.Vector2().subVectors(uvB, uvMinVector).divide(uvScaleVector);\n uvC = new THREE.Vector2().subVectors(uvC, uvMinVector).divide(uvScaleVector);\n\n geometry = this.geometry = new THREE.Geometry();\n geometry.vertices.push(triangle.a);\n geometry.vertices.push(triangle.b);\n geometry.vertices.push(triangle.c);\n geometry.faces.push(new THREE.Face3(0, 1, 2, normal));\n geometry.faceVertexUvs[0] = [[uvA, uvB, uvC]];\n }\n});\n", - "// Check before the polyfill runs.\nwindow.hasNativeWebVRImplementation = !!window.navigator.getVRDisplays || !!window.navigator.getVRDevices;\n\n// WebVR polyfill\nvar WebVRPolyfill = require('webvr-polyfill');\nwindow.webvrpolyfill = new WebVRPolyfill({\n BUFFER_SCALE: 1,\n CARDBOARD_UI_DISABLED: true,\n ROTATE_INSTRUCTIONS_DISABLED: true\n});\n\nvar utils = require('./utils/');\n\nvar debug = utils.debug;\nvar error = debug('A-Frame:error');\nvar warn = debug('A-Frame:warn');\n\nif (window.document.currentScript && window.document.currentScript.parentNode !==\n window.document.head && !window.debug) {\n warn('Put the A-Frame