PositionalAudio.js 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687
  1. /**
  2. * @author mrdoob / http://mrdoob.com/
  3. */
  4. THREE.PositionalAudio = function ( listener ) {
  5. THREE.Audio.call( this, listener );
  6. this.panner = this.context.createPanner();
  7. this.panner.connect( this.gain );
  8. };
  9. THREE.PositionalAudio.prototype = Object.create( THREE.Audio.prototype );
  10. THREE.PositionalAudio.prototype.constructor = THREE.PositionalAudio;
  11. THREE.PositionalAudio.prototype.getOutput = function () {
  12. return this.panner;
  13. };
  14. THREE.PositionalAudio.prototype.setRefDistance = function ( value ) {
  15. this.panner.refDistance = value;
  16. };
  17. THREE.PositionalAudio.prototype.getRefDistance = function () {
  18. return this.panner.refDistance;
  19. };
  20. THREE.PositionalAudio.prototype.setRolloffFactor = function ( value ) {
  21. this.panner.rolloffFactor = value;
  22. };
  23. THREE.PositionalAudio.prototype.getRolloffFactor = function () {
  24. return this.panner.rolloffFactor;
  25. };
  26. THREE.PositionalAudio.prototype.setDistanceModel = function ( value ) {
  27. this.panner.distanceModel = value;
  28. };
  29. THREE.PositionalAudio.prototype.getDistanceModel = function () {
  30. return this.panner.distanceModel;
  31. };
  32. THREE.PositionalAudio.prototype.setMaxDistance = function ( value ) {
  33. this.panner.maxDistance = value;
  34. };
  35. THREE.PositionalAudio.prototype.getMaxDistance = function () {
  36. return this.panner.maxDistance;
  37. };
  38. THREE.PositionalAudio.prototype.updateMatrixWorld = ( function () {
  39. var position = new THREE.Vector3();
  40. return function updateMatrixWorld( force ) {
  41. THREE.Object3D.prototype.updateMatrixWorld.call( this, force );
  42. position.setFromMatrixPosition( this.matrixWorld );
  43. this.panner.setPosition( position.x, position.y, position.z );
  44. };
  45. } )();
粤ICP备19079148号