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) 11.2 kB
import{_ as t,a as e,b as n}from"./webAudioBaseSubGraph-4eia-TfF.esm.min.js";import{V as o,Q as i,M as s}from"./index-yNtOWHHe.esm.min.js";import{_ as a,a as r,b as u}from"./audioEngine-vi2zlmHT.esm.min.js";const h={coneInnerAngle:6.28318530718,coneOuterAngle:6.28318530718,coneOuterVolume:0,distanceModel:"linear",maxDistance:1e4,minDistance:1,panningModel:"equalpower",position:o.Zero(),rolloffFactor:1,rotation:o.Zero(),rotationQuaternion:new i};function c(t){return t.spatialEnabled||void 0!==t.spatialAutoUpdate||void 0!==t.spatialConeInnerAngle||void 0!==t.spatialConeOuterAngle||void 0!==t.spatialConeOuterVolume||void 0!==t.spatialDistanceModel||void 0!==t.spatialMaxDistance||void 0!==t.spatialMinDistance||void 0!==t.spatialMinUpdateTime||void 0!==t.spatialPanningModel||void 0!==t.spatialPosition||void 0!==t.spatialRolloffFactor||void 0!==t.spatialRotation||void 0!==t.spatialRotationQuaternion}class d{}const l=0;class p{}class _ extends t{constructor(t){super("Stereo",t)}setOptions(t){this.pan=t.stereoPan??l}}function m(t){return t.getSubNode("Stereo")}class g extends p{constructor(t){super(),this._pan=l,this._subGraph=t}get pan(){return this._pan}set pan(t){this._pan=t,function(t,e,n){t.callOnSubNode("Stereo",(t=>{t[e]=n}))}(this._subGraph,"pan",t)}}class A extends t{constructor(t){super("Spatial",t),this._attacherComponent=null}get isAttached(){return null!==this._attacherComponent&&this._attacherComponent.isAttached}attach(t,e,n){this.detach(),this._attacherComponent||(this._attacherComponent=new a(this)),this._attacherComponent.attach(t,e,n)}detach(){this._attacherComponent?.detach()}dispose(){super.dispose(),this._attacherComponent?.dispose(),this._attacherComponent=null}setOptions(t){this.coneInnerAngle=t.spatialConeInnerAngle??h.coneInnerAngle,this.coneOuterAngle=t.spatialConeOuterAngle??h.coneOuterAngle,this.coneOuterVolume=t.spatialConeOuterVolume??h.coneOuterVolume,this.distanceModel=t.spatialDistanceModel??h.distanceModel,this.maxDistance=t.spatialMaxDistance??h.maxDistance,this.minDistance=t.spatialMinDistance??h.minDistance,this.panningModel=t.spatialPanningModel??h.panningModel,this.rolloffFactor=t.spatialRolloffFactor??h.rolloffFactor,t.spatialPosition&&(this.position=t.spatialPosition.clone()),t.spatialRotationQuaternion?this.rotationQuaternion=t.spatialRotationQuaternion.clone():t.spatialRotation?this.rotation=t.spatialRotation.clone():this.rotationQuaternion=h.rotationQuaternion.clone(),this.update()}update(){this.isAttached?this._attacherComponent?.update():(this._updatePosition(),this._updateRotation())}}function N(t){return t.getSubNode("Spatial")}function f(t,e,n){t.callOnSubNode("Spatial",(t=>{t[e]=n}))}const b=s.Zero(),M=new i,x=o.Zero();function O(t){return t*Math.PI/180}function D(t){return 180*t/Math.PI}class w extends A{constructor(t){super(t),this._lastPosition=o.Zero(),this._lastRotation=o.Zero(),this._lastRotationQuaternion=new i,this.position=h.position.clone(),this.rotation=h.rotation.clone(),this.rotationQuaternion=h.rotationQuaternion.clone(),this.node=new PannerNode(t._audioContext),this._orientationX=new r(t,this.node.orientationX),this._orientationY=new r(t,this.node.orientationY),this._orientationZ=new r(t,this.node.orientationZ),this._positionX=new r(t,this.node.positionX),this._positionY=new r(t,this.node.positionY),this._positionZ=new r(t,this.node.positionZ)}dispose(){super.dispose(),this._orientationX.dispose(),this._orientationY.dispose(),this._orientationZ.dispose(),this._positionX.dispose(),this._positionY.dispose(),this._positionZ.dispose(),this.node.disconnect()}get coneInnerAngle(){return O(this.node.coneInnerAngle)}set coneInnerAngle(t){this.node.coneInnerAngle=D(t)}get coneOuterAngle(){return O(this.node.coneOuterAngle)}set coneOuterAngle(t){this.node.coneOuterAngle=D(t)}get coneOuterVolume(){return this.node.coneOuterGain}set coneOuterVolume(t){this.node.coneOuterGain=t}get distanceModel(){return this.node.distanceModel}set distanceModel(t){this.node.distanceModel=t;const e=this.node.maxDistance;this.node.maxDistance=e+.001,this.node.maxDistance=e}get minDistance(){return this.node.refDistance}set minDistance(t){this.node.refDistance=t}get maxDistance(){return this.node.maxDistance}set maxDistance(t){this.node.maxDistance=t}get panningModel(){return this.node.panningModel}set panningModel(t){this.node.panningModel=t}get rolloffFactor(){return this.node.rolloffFactor}set rolloffFactor(t){this.node.rolloffFactor=t}get _inNode(){return this.node}get _outNode(){return this.node}_updatePosition(){this._lastPosition.equalsWithEpsilon(this.position)||this.isAttached&&(this._positionX.isRamping||this._positionY.isRamping||this._positionZ.isRamping)||(this._positionX.targetValue=this.position.x,this._positionY.targetValue=this.position.y,this._positionZ.targetValue=this.position.z,this._lastPosition.copyFrom(this.position))}_updateRotation(){if(!this.isAttached||!(this._orientationX.isRamping||this._orientationY.isRamping||this._orientationZ.isRamping)){if(this._lastRotationQuaternion.equalsWithEpsilon(this.rotationQuaternion)){if(this._lastRotation.equalsWithEpsilon(this.rotation))return;i.FromEulerAnglesToRef(this.rotation.x,this.rotation.y,this.rotation.z,M),this._lastRotation.copyFrom(this.rotation)}else M.copyFrom(this.rotationQuaternion),this._lastRotationQuaternion.copyFrom(this.rotationQuaternion);s.FromQuaternionToRef(M,b),o.TransformNormalToRef(o.RightReadOnly,b,x),this._orientationX.targetValue=x.x,this._orientationY.targetValue=x.y,this._orientationZ.targetValue=x.z}}_connect(t){return!!super._connect(t)&&(t._inNode&&this.node.connect(t._inNode),!0)}_disconnect(t){return!!super._disconnect(t)&&(t._inNode&&this.node.disconnect(t._inNode),!0)}getClassName(){return"_SpatialWebAudioSubNode"}}class S extends _{constructor(t){super(t),this.node=new StereoPannerNode(t._audioContext),this._pan=new r(t,this.node.pan)}dispose(){super.dispose(),this._pan.dispose()}get pan(){return this._pan.targetValue}set pan(t){this._pan.targetValue=t}get _inNode(){return this.node}get _outNode(){return this.node}getClassName(){return"_StereoWebAudioSubNode"}_connect(t){return!!super._connect(t)&&(t._inNode&&this.node.connect(t._inNode),!0)}_disconnect(t){return!!super._disconnect(t)&&(t._inNode&&this.node.disconnect(t._inNode),!0)}}class R extends e{constructor(){super(...arguments),this._rootNode=null,this._inputNode=null}async initAsync(t){await super.initAsync(t);let e=!1,n=!1;(e=c(t))&&await this.createAndAddSubNodeAsync("Spatial"),(n=function(t){return t.stereoEnabled||void 0!==t.stereoPan}(t))&&await this.createAndAddSubNodeAsync("Stereo"),await this._createSubNodePromisesResolvedAsync(),e&&N(this)?.setOptions(t),n&&m(this)?.setOptions(t)}get _inNode(){return this._inputNode}_createSubNode(t){try{return super._createSubNode(t)}catch(t){}switch(t){case"Spatial":return async function(t){return new w(t)}(this._owner.engine);case"Stereo":return async function(t){return new S(t)}(this._owner.engine);default:throw new Error(`Unknown subnode name: ${t}`)}}_onSubNodesChanged(){super._onSubNodesChanged();const t=N(this),e=m(this),o=n(this);if(t&&"_SpatialWebAudioSubNode"!==t.getClassName())throw new Error("Not a WebAudio subnode.");if(e&&"_StereoWebAudioSubNode"!==e.getClassName())throw new Error("Not a WebAudio subnode.");if(o&&"_VolumeWebAudioSubNode"!==o.getClassName())throw new Error("Not a WebAudio subnode.");t&&(t.disconnectAll(),o&&t.connect(o)),e&&(e.disconnectAll(),o&&e.connect(o)),t&&e?(this._rootNode=new GainNode(this._owner.engine._audioContext),this._rootNode.connect(t._outNode),this._rootNode.connect(e._outNode)):(this._rootNode?.disconnect(),this._rootNode=null);let i=null,s=null;if(this._rootNode?s=this._rootNode:(t?i=t:e?i=e:o&&(i=o),s=i?.node??null),this._inputNode!==s){if(this._inputNode&&this._upstreamNodes){const t=this._upstreamNodes.values();for(let e=t.next();!e.done;e=t.next())e.value._outNode?.disconnect(this._inputNode)}if(this._inputNode=s,s&&this._upstreamNodes){const t=this._upstreamNodes.values();for(let e=t.next();!e.done;e=t.next())e.value._outNode?.connect(s)}}}}class C extends d{constructor(t){super(),this._coneInnerAngle=h.coneInnerAngle,this._coneOuterAngle=h.coneOuterAngle,this._coneOuterVolume=h.coneOuterVolume,this._distanceModel=h.distanceModel,this._maxDistance=h.maxDistance,this._minDistance=h.minDistance,this._panningModel=h.panningModel,this._rolloffFactor=h.rolloffFactor;const e=N(t);e?(this._position=e.position.clone(),this._rotation=e.rotation.clone(),this._rotationQuaternion=e.rotationQuaternion.clone()):(this._position=h.position.clone(),this._rotation=h.rotation.clone(),this._rotationQuaternion=h.rotationQuaternion.clone(),t.createAndAddSubNodeAsync("Spatial")),this._subGraph=t}get coneInnerAngle(){return this._coneInnerAngle}set coneInnerAngle(t){this._coneInnerAngle=t,f(this._subGraph,"coneInnerAngle",t)}get coneOuterAngle(){return this._coneOuterAngle}set coneOuterAngle(t){this._coneOuterAngle=t,f(this._subGraph,"coneOuterAngle",t)}get coneOuterVolume(){return this._coneOuterVolume}set coneOuterVolume(t){this._coneOuterVolume=t,f(this._subGraph,"coneOuterVolume",t)}get distanceModel(){return this._distanceModel}set distanceModel(t){this._distanceModel=t,f(this._subGraph,"distanceModel",t)}get isAttached(){return this._subGraph.getSubNode("Spatial")?.isAttached??!1}get maxDistance(){return this._maxDistance}set maxDistance(t){t<=0&&(t=1e-6),this._maxDistance=t,f(this._subGraph,"maxDistance",t)}get minDistance(){return this._minDistance}set minDistance(t){this._minDistance=t,f(this._subGraph,"minDistance",t)}get panningModel(){return this._panningModel}set panningModel(t){this._panningModel=t,f(this._subGraph,"panningModel",t)}get position(){return this._position}set position(t){this._position=t,this._updatePosition()}get rolloffFactor(){return this._rolloffFactor}set rolloffFactor(t){this._rolloffFactor=t,f(this._subGraph,"rolloffFactor",t)}get rotation(){return this._rotation}set rotation(t){this._rotation=t,this._updateRotation()}get rotationQuaternion(){return this._rotationQuaternion}set rotationQuaternion(t){this._rotationQuaternion=t,this._updateRotation()}attach(t,e=!1,n=3){N(this._subGraph)?.attach(t,e,n)}detach(){N(this._subGraph)?.detach()}update(){const t=N(this._subGraph);t&&(t.isAttached?t.update():(this._updatePosition(t),this._updateRotation(t)))}_updatePosition(t=null){if(!t&&!(t=N(this._subGraph)))return;t.position.equalsWithEpsilon(this._position)||(t.position.copyFrom(this._position),t._updatePosition())}_updateRotation(t=null){(t||(t=N(this._subGraph)))&&(t.rotationQuaternion.equalsWithEpsilon(this._rotationQuaternion)?t.rotation.equalsWithEpsilon(this._rotation)||(t.rotation.copyFrom(this._rotation),t._updateRotation()):(t.rotationQuaternion.copyFrom(this._rotationQuaternion),t._updateRotation()))}}class Q extends C{constructor(t,e,n){super(t),this._updaterComponent=new u(this,e,n)}get minUpdateTime(){return this._updaterComponent.minUpdateTime}set minUpdateTime(t){this._updaterComponent.minUpdateTime=t}dispose(){this._updaterComponent.dispose(),this._updaterComponent=null}}export{c as _,g as a,Q as b,R as c}; //# sourceMappingURL=spatialWebAudio-BbDz6Oip.esm.min.js.map