|
- /*! howler.js v2.0.9 | Spatial Plugin | (c) 2013-2018, James Simpson of GoldFire Studios | MIT License | howlerjs.com */ ! function () {
- "use strict";
- HowlerGlobal.prototype._pos = [0, 0, 0], HowlerGlobal.prototype._orientation = [0, 0, -1, 0, 1, 0], HowlerGlobal.prototype.stereo = function (n) {
- var e = this;
- if (!e.ctx || !e.ctx.listener) return e;
- for (var t = e._howls.length - 1; t >= 0; t--) e._howls[t].stereo(n);
- return e
- }, HowlerGlobal.prototype.pos = function (n, e, t) {
- var o = this;
- return o.ctx && o.ctx.listener ? (e = "number" != typeof e ? o._pos[1] : e, t = "number" != typeof t ? o._pos[2] : t, "number" != typeof n ? o._pos : (o._pos = [n, e, t], o.ctx.listener.setPosition(o._pos[0], o._pos[1], o._pos[2]), o)) : o
- }, HowlerGlobal.prototype.orientation = function (n, e, t, o, r, a) {
- var i = this;
- if (!i.ctx || !i.ctx.listener) return i;
- var p = i._orientation;
- return e = "number" != typeof e ? p[1] : e, t = "number" != typeof t ? p[2] : t, o = "number" != typeof o ? p[3] : o, r = "number" != typeof r ? p[4] : r, a = "number" != typeof a ? p[5] : a, "number" != typeof n ? p : (i._orientation = [n, e, t, o, r, a], i.ctx.listener.setOrientation(n, e, t, o, r, a), i)
- }, Howl.prototype.init = function (n) {
- return function (e) {
- var t = this;
- return t._orientation = e.orientation || [1, 0, 0], t._stereo = e.stereo || null, t._pos = e.pos || null, t._pannerAttr = {
- coneInnerAngle: void 0 !== e.coneInnerAngle ? e.coneInnerAngle : 360,
- coneOuterAngle: void 0 !== e.coneOuterAngle ? e.coneOuterAngle : 360,
- coneOuterGain: void 0 !== e.coneOuterGain ? e.coneOuterGain : 0,
- distanceModel: void 0 !== e.distanceModel ? e.distanceModel : "inverse",
- maxDistance: void 0 !== e.maxDistance ? e.maxDistance : 1e4,
- panningModel: void 0 !== e.panningModel ? e.panningModel : "HRTF",
- refDistance: void 0 !== e.refDistance ? e.refDistance : 1,
- rolloffFactor: void 0 !== e.rolloffFactor ? e.rolloffFactor : 1
- }, t._onstereo = e.onstereo ? [{
- fn: e.onstereo
- }] : [], t._onpos = e.onpos ? [{
- fn: e.onpos
- }] : [], t._onorientation = e.onorientation ? [{
- fn: e.onorientation
- }] : [], n.call(this, e)
- }
- }(Howl.prototype.init), Howl.prototype.stereo = function (e, t) {
- var o = this;
- if (!o._webAudio) return o;
- if ("loaded" !== o._state) return o._queue.push({
- event: "stereo",
- action: function () {
- o.stereo(e, t)
- }
- }), o;
- var r = void 0 === Howler.ctx.createStereoPanner ? "spatial" : "stereo";
- if (void 0 === t) {
- if ("number" != typeof e) return o._stereo;
- o._stereo = e, o._pos = [e, 0, 0]
- }
- for (var a = o._getSoundIds(t), i = 0; i < a.length; i++) {
- var p = o._soundById(a[i]);
- if (p) {
- if ("number" != typeof e) return p._stereo;
- p._stereo = e, p._pos = [e, 0, 0], p._node && (p._pannerAttr.panningModel = "equalpower", p._panner && p._panner.pan || n(p, r), "spatial" === r ? p._panner.setPosition(e, 0, 0) : p._panner.pan.setValueAtTime(e, Howler.ctx.currentTime)), o._emit("stereo", p._id)
- }
- }
- return o
- }, Howl.prototype.pos = function (e, t, o, r) {
- var a = this;
- if (!a._webAudio) return a;
- if ("loaded" !== a._state) return a._queue.push({
- event: "pos",
- action: function () {
- a.pos(e, t, o, r)
- }
- }), a;
- if (t = "number" != typeof t ? 0 : t, o = "number" != typeof o ? -.5 : o, void 0 === r) {
- if ("number" != typeof e) return a._pos;
- a._pos = [e, t, o]
- }
- for (var i = a._getSoundIds(r), p = 0; p < i.length; p++) {
- var s = a._soundById(i[p]);
- if (s) {
- if ("number" != typeof e) return s._pos;
- s._pos = [e, t, o], s._node && (s._panner && !s._panner.pan || n(s, "spatial"), s._panner.setPosition(e, t, o)), a._emit("pos", s._id)
- }
- }
- return a
- }, Howl.prototype.orientation = function (e, t, o, r) {
- var a = this;
- if (!a._webAudio) return a;
- if ("loaded" !== a._state) return a._queue.push({
- event: "orientation",
- action: function () {
- a.orientation(e, t, o, r)
- }
- }), a;
- if (t = "number" != typeof t ? a._orientation[1] : t, o = "number" != typeof o ? a._orientation[2] : o, void 0 === r) {
- if ("number" != typeof e) return a._orientation;
- a._orientation = [e, t, o]
- }
- for (var i = a._getSoundIds(r), p = 0; p < i.length; p++) {
- var s = a._soundById(i[p]);
- if (s) {
- if ("number" != typeof e) return s._orientation;
- s._orientation = [e, t, o], s._node && (s._panner || (s._pos || (s._pos = a._pos || [0, 0, -.5]), n(s, "spatial")), s._panner.setOrientation(e, t, o)), a._emit("orientation", s._id)
- }
- }
- return a
- }, Howl.prototype.pannerAttr = function () {
- var e, t, o, r = this,
- a = arguments;
- if (!r._webAudio) return r;
- if (0 === a.length) return r._pannerAttr;
- if (1 === a.length) {
- if ("object" != typeof a[0]) return o = r._soundById(parseInt(a[0], 10)), o ? o._pannerAttr : r._pannerAttr;
- e = a[0], void 0 === t && (e.pannerAttr || (e.pannerAttr = {
- coneInnerAngle: e.coneInnerAngle,
- coneOuterAngle: e.coneOuterAngle,
- coneOuterGain: e.coneOuterGain,
- distanceModel: e.distanceModel,
- maxDistance: e.maxDistance,
- refDistance: e.refDistance,
- rolloffFactor: e.rolloffFactor,
- panningModel: e.panningModel
- }), r._pannerAttr = {
- coneInnerAngle: void 0 !== e.pannerAttr.coneInnerAngle ? e.pannerAttr.coneInnerAngle : r._coneInnerAngle,
- coneOuterAngle: void 0 !== e.pannerAttr.coneOuterAngle ? e.pannerAttr.coneOuterAngle : r._coneOuterAngle,
- coneOuterGain: void 0 !== e.pannerAttr.coneOuterGain ? e.pannerAttr.coneOuterGain : r._coneOuterGain,
- distanceModel: void 0 !== e.pannerAttr.distanceModel ? e.pannerAttr.distanceModel : r._distanceModel,
- maxDistance: void 0 !== e.pannerAttr.maxDistance ? e.pannerAttr.maxDistance : r._maxDistance,
- refDistance: void 0 !== e.pannerAttr.refDistance ? e.pannerAttr.refDistance : r._refDistance,
- rolloffFactor: void 0 !== e.pannerAttr.rolloffFactor ? e.pannerAttr.rolloffFactor : r._rolloffFactor,
- panningModel: void 0 !== e.pannerAttr.panningModel ? e.pannerAttr.panningModel : r._panningModel
- })
- } else 2 === a.length && (e = a[0], t = parseInt(a[1], 10));
- for (var i = r._getSoundIds(t), p = 0; p < i.length; p++)
- if (o = r._soundById(i[p])) {
- var s = o._pannerAttr;
- s = {
- coneInnerAngle: void 0 !== e.coneInnerAngle ? e.coneInnerAngle : s.coneInnerAngle,
- coneOuterAngle: void 0 !== e.coneOuterAngle ? e.coneOuterAngle : s.coneOuterAngle,
- coneOuterGain: void 0 !== e.coneOuterGain ? e.coneOuterGain : s.coneOuterGain,
- distanceModel: void 0 !== e.distanceModel ? e.distanceModel : s.distanceModel,
- maxDistance: void 0 !== e.maxDistance ? e.maxDistance : s.maxDistance,
- refDistance: void 0 !== e.refDistance ? e.refDistance : s.refDistance,
- rolloffFactor: void 0 !== e.rolloffFactor ? e.rolloffFactor : s.rolloffFactor,
- panningModel: void 0 !== e.panningModel ? e.panningModel : s.panningModel
- };
- var l = o._panner;
- l ? (l.coneInnerAngle = s.coneInnerAngle, l.coneOuterAngle = s.coneOuterAngle, l.coneOuterGain = s.coneOuterGain, l.distanceModel = s.distanceModel, l.maxDistance = s.maxDistance, l.refDistance = s.refDistance, l.rolloffFactor = s.rolloffFactor, l.panningModel = s.panningModel) : (o._pos || (o._pos = r._pos || [0, 0, -.5]), n(o, "spatial"))
- }
- return r
- }, Sound.prototype.init = function (n) {
- return function () {
- var e = this,
- t = e._parent;
- e._orientation = t._orientation, e._stereo = t._stereo, e._pos = t._pos, e._pannerAttr = t._pannerAttr, n.call(this), e._stereo ? t.stereo(e._stereo) : e._pos && t.pos(e._pos[0], e._pos[1], e._pos[2], e._id)
- }
- }(Sound.prototype.init), Sound.prototype.reset = function (n) {
- return function () {
- var e = this,
- t = e._parent;
- return e._orientation = t._orientation, e._pos = t._pos, e._pannerAttr = t._pannerAttr, n.call(this)
- }
- }(Sound.prototype.reset);
- var n = function (n, e) {
- e = e || "spatial", "spatial" === e ? (n._panner = Howler.ctx.createPanner(), n._panner.coneInnerAngle = n._pannerAttr.coneInnerAngle, n._panner.coneOuterAngle = n._pannerAttr.coneOuterAngle, n._panner.coneOuterGain = n._pannerAttr.coneOuterGain, n._panner.distanceModel = n._pannerAttr.distanceModel, n._panner.maxDistance = n._pannerAttr.maxDistance, n._panner.refDistance = n._pannerAttr.refDistance, n._panner.rolloffFactor = n._pannerAttr.rolloffFactor, n._panner.panningModel = n._pannerAttr.panningModel, n._panner.setPosition(n._pos[0], n._pos[1], n._pos[2]), n._panner.setOrientation(n._orientation[0], n._orientation[1], n._orientation[2])) : (n._panner = Howler.ctx.createStereoPanner(), n._panner.pan.setValueAtTime(n._stereo, Howler.ctx.currentTime)), n._panner.connect(n._node), n._paused || n._parent.pause(n._id, !0).play(n._id, !0)
- }
- }();
|