| 615 | * @param {String} type Type of panner to create: 'stereo' or 'spatial'. |
| 616 | */ |
| 617 | var setupPanner = function(sound, type) { |
| 618 | type = type || 'spatial'; |
| 619 | |
| 620 | // Create the new panner node. |
| 621 | if (type === 'spatial') { |
| 622 | sound._panner = Howler.ctx.createPanner(); |
| 623 | sound._panner.coneInnerAngle = sound._pannerAttr.coneInnerAngle; |
| 624 | sound._panner.coneOuterAngle = sound._pannerAttr.coneOuterAngle; |
| 625 | sound._panner.coneOuterGain = sound._pannerAttr.coneOuterGain; |
| 626 | sound._panner.distanceModel = sound._pannerAttr.distanceModel; |
| 627 | sound._panner.maxDistance = sound._pannerAttr.maxDistance; |
| 628 | sound._panner.refDistance = sound._pannerAttr.refDistance; |
| 629 | sound._panner.rolloffFactor = sound._pannerAttr.rolloffFactor; |
| 630 | sound._panner.panningModel = sound._pannerAttr.panningModel; |
| 631 | |
| 632 | if (typeof sound._panner.positionX !== 'undefined') { |
| 633 | sound._panner.positionX.setValueAtTime(sound._pos[0], Howler.ctx.currentTime); |
| 634 | sound._panner.positionY.setValueAtTime(sound._pos[1], Howler.ctx.currentTime); |
| 635 | sound._panner.positionZ.setValueAtTime(sound._pos[2], Howler.ctx.currentTime); |
| 636 | } else { |
| 637 | sound._panner.setPosition(sound._pos[0], sound._pos[1], sound._pos[2]); |
| 638 | } |
| 639 | |
| 640 | if (typeof sound._panner.orientationX !== 'undefined') { |
| 641 | sound._panner.orientationX.setValueAtTime(sound._orientation[0], Howler.ctx.currentTime); |
| 642 | sound._panner.orientationY.setValueAtTime(sound._orientation[1], Howler.ctx.currentTime); |
| 643 | sound._panner.orientationZ.setValueAtTime(sound._orientation[2], Howler.ctx.currentTime); |
| 644 | } else { |
| 645 | sound._panner.setOrientation(sound._orientation[0], sound._orientation[1], sound._orientation[2]); |
| 646 | } |
| 647 | } else { |
| 648 | sound._panner = Howler.ctx.createStereoPanner(); |
| 649 | sound._panner.pan.setValueAtTime(sound._stereo, Howler.ctx.currentTime); |
| 650 | } |
| 651 | |
| 652 | sound._panner.connect(sound._node); |
| 653 | |
| 654 | // Update the connections. |
| 655 | if (!sound._paused) { |
| 656 | sound._parent.pause(sound._id, true).play(sound._id, true); |
| 657 | } |
| 658 | }; |
| 659 | })(); |