UNPKG

@babylonjs/viewer

Version:

The Babylon Viewer aims to simplify a specific but common Babylon.js use case: loading, viewing, and interacting with a 3D model.

3 lines (2 loc) 2.6 kB
import{A as e}from"./abstractSoundSource-C5k4Xume.esm.min.js";import{_ as t,a as s,b as i,c as o}from"./spatialWebAudio-Cxs0XdBX.esm.min.js";import"./webAudioBaseSubGraph-Ww7puCo8.esm.min.js";import"./spatialWebAudioUpdaterComponent-LOlF6N8J.esm.min.js";import"./index-BPURObVq.esm.min.js";class n extends e{constructor(e,t,s,i){super(e,s,i),this._stereo=null,this._webAudioNode=null,this._mediaStreamAudioElement=null,this._stopMediaStreamTracksOnDispose=!1,this._audioContext=this.engine._audioContext,this._webAudioNode=t,this._stopMediaStreamTracksOnDispose=!0===i.stopMediaStreamTracksOnDispose,!1!==i.mediaStreamSinkEnabled&&t instanceof MediaStreamAudioSourceNode&&this._attachMediaStreamSink(t.mediaStream),this._subGraph=new n._SubGraph(this)}_attachMediaStreamSink(e){if("undefined"==typeof Audio)return;const t=new Audio;t.muted=!0,t.srcObject=e,this._mediaStreamAudioElement=t,this._startMediaStreamSinkAsync(t)}async _startMediaStreamSinkAsync(e){try{await e.play()}catch{}}async _initAsync(e){e.outBus?this.outBus=e.outBus:!1!==e.outBusAutoDefault&&(await this.engine.isReadyPromise,this.outBus=this.engine.defaultMainBus),await this._subGraph.initAsync(e),t(e)&&this._initSpatialProperty(),this.engine._addNode(this)}get _inNode(){return this._webAudioNode}get _outNode(){return this._subGraph._outNode}get stereo(){return this._stereo??(this._stereo=new s(this._subGraph))}dispose(){if(super.dispose(),this._mediaStreamAudioElement&&(this._mediaStreamAudioElement.pause(),this._mediaStreamAudioElement.srcObject=null,this._mediaStreamAudioElement=null),this._webAudioNode){if(this._stopMediaStreamTracksOnDispose&&this._webAudioNode instanceof MediaStreamAudioSourceNode)for(const e of this._webAudioNode.mediaStream.getTracks())e.stop();this._webAudioNode.disconnect(),this._webAudioNode=null}this._stereo=null,this._subGraph.dispose(),this.engine._removeNode(this)}getClassName(){return"_WebAudioSoundSource"}_connect(e){return!!super._connect(e)&&(e._inNode&&this._outNode?.connect(e._inNode),!0)}_disconnect(e){return!!super._disconnect(e)&&(e._inNode&&this._outNode?.disconnect(e._inNode),!0)}_createSpatialProperty(e,t){return new i(this._subGraph,e,t)}}n._SubGraph=class extends o{get _downstreamNodes(){return this._owner._downstreamNodes??null}get _upstreamNodes(){return this._owner._upstreamNodes??null}_onSubNodesChanged(){super._onSubNodesChanged(),this._owner._inNode?.disconnect(),this._owner._subGraph._inNode&&this._owner._inNode?.connect(this._owner._subGraph._inNode)}};export{n as _WebAudioSoundSource}; //# sourceMappingURL=webAudioSoundSource-CbegW_An.esm.min.js.map