@babylonjs/core 7.54.0 → 7.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AudioV2/abstractAudio/abstractAudioBus.d.ts +2 -3
- package/AudioV2/abstractAudio/abstractAudioBus.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +2 -3
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +1 -1
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +2 -2
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +7 -7
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.d.ts +2 -2
- package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.js +7 -7
- package/AudioV2/webAudio/subNodes/stereoWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.d.ts +2 -2
- package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.js +7 -7
- package/AudioV2/webAudio/subNodes/volumeWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +1 -1
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +2 -2
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.d.ts +3 -3
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js +9 -9
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js.map +1 -1
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.d.ts +2 -2
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js +11 -11
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
- package/AudioV2/webAudio/webAudioBus.d.ts +6 -6
- package/AudioV2/webAudio/webAudioBus.js +27 -8
- package/AudioV2/webAudio/webAudioBus.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.d.ts +7 -7
- package/AudioV2/webAudio/webAudioEngine.js +27 -27
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/AudioV2/webAudio/webAudioMainBus.d.ts +3 -5
- package/AudioV2/webAudio/webAudioMainBus.js +11 -12
- package/AudioV2/webAudio/webAudioMainBus.js.map +1 -1
- package/AudioV2/webAudio/webAudioMainOut.d.ts +1 -1
- package/AudioV2/webAudio/webAudioMainOut.js +2 -2
- package/AudioV2/webAudio/webAudioMainOut.js.map +1 -1
- package/AudioV2/webAudio/webAudioNode.d.ts +2 -2
- package/AudioV2/webAudio/webAudioNode.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +7 -7
- package/AudioV2/webAudio/webAudioStaticSound.js +27 -27
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +6 -6
- package/AudioV2/webAudio/webAudioStreamingSound.js +27 -27
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioUnmuteUI.js +3 -2
- package/AudioV2/webAudio/webAudioUnmuteUI.js.map +1 -1
- package/Engines/abstractEngine.js +5 -11
- package/Engines/abstractEngine.js.map +1 -1
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js +6 -0
- package/FlowGraph/Blocks/Event/flowGraphReceiveCustomEventBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphConsoleLogBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.d.ts +6 -6
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js +31 -4
- package/FlowGraph/Blocks/Execution/flowGraphSetVariableBlock.js.map +1 -1
- package/FlowGraph/flowGraphCoordinator.d.ts +21 -1
- package/FlowGraph/flowGraphCoordinator.js +51 -2
- package/FlowGraph/flowGraphCoordinator.js.map +1 -1
- package/FlowGraph/flowGraphParser.js +3 -0
- package/FlowGraph/flowGraphParser.js.map +1 -1
- package/Loading/Plugins/babylonFileLoader.js +4 -0
- package/Loading/Plugins/babylonFileLoader.js.map +1 -1
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js +4 -3
- package/Materials/Node/Blocks/Dual/reflectionTextureBaseBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js +26 -17
- package/Materials/Node/Blocks/Fragment/perturbNormalBlock.js.map +1 -1
- package/Materials/Node/Blocks/Fragment/shadowMapBlock.js +8 -0
- package/Materials/Node/Blocks/Fragment/shadowMapBlock.js.map +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js +1 -1
- package/Materials/Node/Blocks/Input/inputBlock.js.map +1 -1
- package/Materials/Node/nodeMaterial.d.ts +2 -0
- package/Materials/Node/nodeMaterial.js +6 -1
- package/Materials/Node/nodeMaterial.js.map +1 -1
- package/Materials/Node/nodeMaterialBlock.js +11 -2
- package/Materials/Node/nodeMaterialBlock.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildState.js +41 -13
- package/Materials/Node/nodeMaterialBuildState.js.map +1 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.d.ts +11 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js +11 -1
- package/Materials/Node/nodeMaterialBuildStateSharedData.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +1 -1
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Misc/sceneSerializer.js +2 -0
- package/Misc/sceneSerializer.js.map +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js +1 -1
- package/Shaders/ShadersInclude/pbrBlockReflection.js.map +1 -1
- package/Shaders/imageProcessing.fragment.js +1 -1
- package/Shaders/imageProcessing.fragment.js.map +1 -1
- package/Shaders/motionBlur.fragment.js +1 -1
- package/Shaders/motionBlur.fragment.js.map +1 -1
- package/Shaders/screenSpaceReflection2.fragment.js +1 -1
- package/Shaders/screenSpaceReflection2.fragment.js.map +1 -1
- package/ShadersWGSL/imageProcessing.fragment.js +1 -1
- package/ShadersWGSL/imageProcessing.fragment.js.map +1 -1
- package/ShadersWGSL/motionBlur.fragment.js +1 -1
- package/ShadersWGSL/motionBlur.fragment.js.map +1 -1
- package/ShadersWGSL/screenSpaceReflection2.fragment.js +1 -1
- package/ShadersWGSL/screenSpaceReflection2.fragment.js.map +1 -1
- package/package.json +1 -1
- package/scene.d.ts +9 -2
- package/scene.js +9 -2
- package/scene.js.map +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webAudioBaseSubGraph.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,sBAAsB,EAAE,MAAM,oDAAoD,CAAC;AAE5F,OAAO,EAAE,wBAAwB,EAAE,MAAM,mDAAmD,CAAC;AAG7F,OAAO,EAAE,sBAAsB,EAAE,MAAM,iDAAiD,CAAC;AAEzF,OAAO,EAAE,wBAAwB,EAAE,MAAM,yDAAyD,CAAC;AAGnG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yBAAyB,CAAC;AACzE,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAO7E,gBAAgB;AAChB,MAAM,OAAgB,qBAAsB,SAAQ,sBAAsB;IAItE,gBAAgB;IAChB,YAAmB,KAAyB;QACxC,KAAK,EAAE,CAAC;QAJF,
|
|
1
|
+
{"version":3,"file":"webAudioBaseSubGraph.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../../types\";\nimport type { AbstractAudioNode } from \"../../abstractAudio/abstractAudioNode\";\nimport { _AbstractAudioSubGraph } from \"../../abstractAudio/subNodes/abstractAudioSubGraph\";\nimport type { _AbstractAudioSubNode } from \"../../abstractAudio/subNodes/abstractAudioSubNode\";\nimport { _GetAudioAnalyzerSubNode } from \"../../abstractAudio/subNodes/audioAnalyzerSubNode\";\nimport { AudioSubNode } from \"../../abstractAudio/subNodes/audioSubNode\";\nimport type { IVolumeAudioOptions } from \"../../abstractAudio/subNodes/volumeAudioSubNode\";\nimport { _GetVolumeAudioSubNode } from \"../../abstractAudio/subNodes/volumeAudioSubNode\";\nimport type { IAudioAnalyzerOptions } from \"../../abstractAudio/subProperties/abstractAudioAnalyzer\";\nimport { _HasAudioAnalyzerOptions } from \"../../abstractAudio/subProperties/abstractAudioAnalyzer\";\nimport type { IWebAudioInNode, IWebAudioSuperNode } from \"../webAudioNode\";\nimport type { _VolumeWebAudioSubNode } from \"./volumeWebAudioSubNode\";\nimport { _CreateVolumeAudioSubNodeAsync } from \"./volumeWebAudioSubNode\";\nimport { _CreateAudioAnalyzerSubNodeAsync } from \"./webAudioAnalyzerSubNode\";\n\n/**\n * Options for creating a WebAudioBaseSubGraph.\n */\nexport interface IWebAudioBaseSubGraphOptions extends IAudioAnalyzerOptions, IVolumeAudioOptions {}\n\n/** @internal */\nexport abstract class _WebAudioBaseSubGraph extends _AbstractAudioSubGraph {\n protected _owner: IWebAudioSuperNode;\n protected _outputNode: Nullable<AudioNode> = null;\n\n /** @internal */\n public constructor(owner: IWebAudioSuperNode) {\n super();\n\n this._owner = owner;\n }\n\n /** @internal */\n public async init(options: Partial<IWebAudioBaseSubGraphOptions>): Promise<void> {\n const hasAnalyzerOptions = _HasAudioAnalyzerOptions(options);\n\n if (hasAnalyzerOptions) {\n await this.createAndAddSubNode(AudioSubNode.ANALYZER);\n }\n\n await this.createAndAddSubNode(AudioSubNode.VOLUME);\n\n await this._createSubNodePromisesResolved();\n\n if (hasAnalyzerOptions) {\n const analyzerNode = _GetAudioAnalyzerSubNode(this);\n if (!analyzerNode) {\n throw new Error(\"No analyzer subnode.\");\n }\n\n analyzerNode.setOptions(options);\n }\n\n const volumeNode = _GetVolumeAudioSubNode(this);\n if (!volumeNode) {\n throw new Error(\"No volume subnode.\");\n }\n\n volumeNode.setOptions(options);\n\n if (volumeNode.getClassName() !== \"_VolumeWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n\n this._outputNode = (volumeNode as _VolumeWebAudioSubNode).node;\n\n // Connect the new wrapped WebAudio node to the wrapped downstream WebAudio nodes.\n // The wrapper nodes are unaware of this change.\n if (this._outputNode && this._downstreamNodes) {\n const it = this._downstreamNodes.values();\n for (let next = it.next(); !next.done; next = it.next()) {\n const inNode = (next.value as IWebAudioInNode)._inNode;\n if (inNode) {\n this._outputNode.connect(inNode);\n }\n }\n }\n }\n\n protected abstract readonly _downstreamNodes: Nullable<Set<AbstractAudioNode>>;\n\n /** @internal */\n public get _inNode(): Nullable<AudioNode> {\n return this._outputNode;\n }\n\n /** @internal */\n public get _outNode(): Nullable<AudioNode> {\n return this._outputNode;\n }\n\n protected _createSubNode(name: string): Promise<_AbstractAudioSubNode> {\n switch (name) {\n case AudioSubNode.ANALYZER:\n return _CreateAudioAnalyzerSubNodeAsync(this._owner.engine);\n case AudioSubNode.VOLUME:\n return _CreateVolumeAudioSubNodeAsync(this._owner.engine);\n default:\n throw new Error(`Unknown subnode name: ${name}`);\n }\n }\n\n protected _onSubNodesChanged(): void {\n const analyzerNode = _GetAudioAnalyzerSubNode(this);\n const volumeNode = _GetVolumeAudioSubNode(this);\n\n if (analyzerNode && volumeNode) {\n volumeNode.connect(analyzerNode);\n }\n }\n}\n"]}
|
|
@@ -12,11 +12,11 @@ export interface IWebAudioBusAndSoundSubGraphOptions extends ISpatialAudioOption
|
|
|
12
12
|
export declare abstract class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {
|
|
13
13
|
private _rootNode;
|
|
14
14
|
protected abstract readonly _upstreamNodes: Nullable<Set<AbstractAudioNode>>;
|
|
15
|
-
protected
|
|
15
|
+
protected _inputNode: Nullable<AudioNode>;
|
|
16
16
|
/** @internal */
|
|
17
17
|
init(options: Partial<IWebAudioBusAndSoundSubGraphOptions>): Promise<void>;
|
|
18
18
|
/** @internal */
|
|
19
|
-
get
|
|
19
|
+
get _inNode(): Nullable<AudioNode>;
|
|
20
20
|
protected _createSubNode(name: string): Promise<_AbstractAudioSubNode>;
|
|
21
21
|
protected _onSubNodesChanged(): void;
|
|
22
22
|
}
|
|
@@ -11,7 +11,7 @@ export class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {
|
|
|
11
11
|
constructor() {
|
|
12
12
|
super(...arguments);
|
|
13
13
|
this._rootNode = null;
|
|
14
|
-
this.
|
|
14
|
+
this._inputNode = null;
|
|
15
15
|
}
|
|
16
16
|
/** @internal */
|
|
17
17
|
async init(options) {
|
|
@@ -33,8 +33,8 @@ export class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {
|
|
|
33
33
|
}
|
|
34
34
|
}
|
|
35
35
|
/** @internal */
|
|
36
|
-
get
|
|
37
|
-
return this.
|
|
36
|
+
get _inNode() {
|
|
37
|
+
return this._inputNode;
|
|
38
38
|
}
|
|
39
39
|
_createSubNode(name) {
|
|
40
40
|
try {
|
|
@@ -78,9 +78,9 @@ export class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {
|
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
if (spatialNode && stereoNode) {
|
|
81
|
-
this._rootNode = new GainNode(this._owner.engine.
|
|
82
|
-
this._rootNode.connect(spatialNode.
|
|
83
|
-
this._rootNode.connect(stereoNode.
|
|
81
|
+
this._rootNode = new GainNode(this._owner.engine._audioContext);
|
|
82
|
+
this._rootNode.connect(spatialNode._outNode);
|
|
83
|
+
this._rootNode.connect(stereoNode._outNode);
|
|
84
84
|
}
|
|
85
85
|
else {
|
|
86
86
|
this._rootNode?.disconnect();
|
|
@@ -103,22 +103,22 @@ export class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {
|
|
|
103
103
|
}
|
|
104
104
|
inNode = inSubNode?.node ?? null;
|
|
105
105
|
}
|
|
106
|
-
if (this.
|
|
106
|
+
if (this._inputNode !== inNode) {
|
|
107
107
|
// Disconnect the wrapped upstream WebAudio nodes from the old wrapped WebAudio node.
|
|
108
108
|
// The wrapper nodes are unaware of this change.
|
|
109
|
-
if (this.
|
|
109
|
+
if (this._inputNode && this._upstreamNodes) {
|
|
110
110
|
const it = this._upstreamNodes.values();
|
|
111
111
|
for (let next = it.next(); !next.done; next = it.next()) {
|
|
112
|
-
next.value.
|
|
112
|
+
next.value._outNode?.disconnect(this._inputNode);
|
|
113
113
|
}
|
|
114
114
|
}
|
|
115
|
-
this.
|
|
115
|
+
this._inputNode = inNode;
|
|
116
116
|
// Connect the wrapped upstream WebAudio nodes to the new wrapped WebAudio node.
|
|
117
117
|
// The wrapper nodes are unaware of this change.
|
|
118
118
|
if (inNode && this._upstreamNodes) {
|
|
119
119
|
const it = this._upstreamNodes.values();
|
|
120
120
|
for (let next = it.next(); !next.done; next = it.next()) {
|
|
121
|
-
next.value.
|
|
121
|
+
next.value._outNode?.connect(inNode);
|
|
122
122
|
}
|
|
123
123
|
}
|
|
124
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webAudioBusAndSoundSubGraph.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../../types\";\nimport type { AbstractAudioNode } from \"../../abstractAudio/abstractAudioNode\";\nimport type { _AbstractAudioSubNode } from \"../../abstractAudio/subNodes/abstractAudioSubNode\";\nimport { AudioSubNode } from \"../../abstractAudio/subNodes/audioSubNode\";\nimport { _GetSpatialAudioSubNode } from \"../../abstractAudio/subNodes/spatialAudioSubNode\";\nimport { _GetStereoAudioSubNode } from \"../../abstractAudio/subNodes/stereoAudioSubNode\";\nimport type { IVolumeAudioOptions } from \"../../abstractAudio/subNodes/volumeAudioSubNode\";\nimport { _GetVolumeAudioSubNode } from \"../../abstractAudio/subNodes/volumeAudioSubNode\";\nimport type { ISpatialAudioOptions } from \"../../abstractAudio/subProperties/abstractSpatialAudio\";\nimport { _HasSpatialAudioOptions } from \"../../abstractAudio/subProperties/abstractSpatialAudio\";\nimport type { IStereoAudioOptions } from \"../../abstractAudio/subProperties/abstractStereoAudio\";\nimport { _HasStereoAudioOptions } from \"../../abstractAudio/subProperties/abstractStereoAudio\";\nimport type { IWebAudioOutNode, IWebAudioSubNode } from \"../webAudioNode\";\nimport type { _SpatialWebAudioSubNode } from \"./spatialWebAudioSubNode\";\nimport { _CreateSpatialAudioSubNodeAsync } from \"./spatialWebAudioSubNode\";\nimport type { _StereoWebAudioSubNode } from \"./stereoWebAudioSubNode\";\nimport { _CreateStereoAudioSubNodeAsync } from \"./stereoWebAudioSubNode\";\nimport type { _VolumeWebAudioSubNode } from \"./volumeWebAudioSubNode\";\nimport { _WebAudioBaseSubGraph } from \"./webAudioBaseSubGraph\";\n\n/** @internal */\nexport interface IWebAudioBusAndSoundSubGraphOptions extends ISpatialAudioOptions, IStereoAudioOptions, IVolumeAudioOptions {}\n\n/** @internal */\nexport abstract class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {\n private _rootNode: Nullable<GainNode> = null;\n protected abstract readonly _upstreamNodes: Nullable<Set<AbstractAudioNode>>;\n\n protected _inNode: Nullable<AudioNode> = null;\n\n /** @internal */\n public override async init(options: Partial<IWebAudioBusAndSoundSubGraphOptions>): Promise<void> {\n await super.init(options);\n\n let hasSpatialOptions = false;\n let hasStereoOptions = false;\n\n if ((hasSpatialOptions = _HasSpatialAudioOptions(options))) {\n await this.createAndAddSubNode(AudioSubNode.SPATIAL);\n }\n if ((hasStereoOptions = _HasStereoAudioOptions(options))) {\n await this.createAndAddSubNode(AudioSubNode.STEREO);\n }\n\n await this._createSubNodePromisesResolved();\n\n if (hasSpatialOptions) {\n _GetSpatialAudioSubNode(this)?.setOptions(options);\n }\n if (hasStereoOptions) {\n _GetStereoAudioSubNode(this)?.setOptions(options);\n }\n }\n\n /** @internal */\n public override get inNode(): Nullable<AudioNode> {\n return this._inNode;\n }\n\n protected override _createSubNode(name: string): Promise<_AbstractAudioSubNode> {\n try {\n const node = super._createSubNode(name);\n return node;\n } catch (e) {}\n\n switch (name) {\n case AudioSubNode.SPATIAL:\n return _CreateSpatialAudioSubNodeAsync(this._owner.engine);\n case AudioSubNode.STEREO:\n return _CreateStereoAudioSubNodeAsync(this._owner.engine);\n default:\n throw new Error(`Unknown subnode name: ${name}`);\n }\n }\n\n protected override _onSubNodesChanged(): void {\n super._onSubNodesChanged();\n\n const spatialNode = _GetSpatialAudioSubNode(this);\n const stereoNode = _GetStereoAudioSubNode(this);\n const volumeNode = _GetVolumeAudioSubNode(this);\n\n if (spatialNode && spatialNode.getClassName() !== \"_SpatialWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n if (stereoNode && stereoNode.getClassName() !== \"_StereoWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n if (volumeNode && volumeNode.getClassName() !== \"_VolumeWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n\n if (spatialNode) {\n spatialNode.disconnectAll();\n\n if (volumeNode) {\n spatialNode.connect(volumeNode);\n }\n }\n\n if (stereoNode) {\n stereoNode.disconnectAll();\n\n if (volumeNode) {\n stereoNode.connect(volumeNode);\n }\n }\n\n if (spatialNode && stereoNode) {\n this._rootNode = new GainNode(this._owner.engine.audioContext);\n this._rootNode.connect((spatialNode as _SpatialWebAudioSubNode).outNode);\n this._rootNode.connect((stereoNode as _StereoWebAudioSubNode).outNode);\n } else {\n this._rootNode?.disconnect();\n this._rootNode = null;\n }\n\n let inSubNode: Nullable<IWebAudioSubNode> = null;\n\n let inNode: Nullable<AudioNode> = null;\n\n if (this._rootNode) {\n inNode = this._rootNode;\n } else {\n if (spatialNode) {\n inSubNode = spatialNode as _SpatialWebAudioSubNode;\n } else if (stereoNode) {\n inSubNode = stereoNode as _StereoWebAudioSubNode;\n } else if (volumeNode) {\n inSubNode = volumeNode as _VolumeWebAudioSubNode;\n }\n\n inNode = inSubNode?.node ?? null;\n }\n\n if (this._inNode !== inNode) {\n // Disconnect the wrapped upstream WebAudio nodes from the old wrapped WebAudio node.\n // The wrapper nodes are unaware of this change.\n if (this._inNode && this._upstreamNodes) {\n const it = this._upstreamNodes.values();\n for (let next = it.next(); !next.done; next = it.next()) {\n (next.value as IWebAudioOutNode).outNode?.disconnect(this._inNode);\n }\n }\n\n this._inNode = inNode;\n\n // Connect the wrapped upstream WebAudio nodes to the new wrapped WebAudio node.\n // The wrapper nodes are unaware of this change.\n if (inNode && this._upstreamNodes) {\n const it = this._upstreamNodes.values();\n for (let next = it.next(); !next.done; next = it.next()) {\n (next.value as IWebAudioOutNode).outNode?.connect(inNode);\n }\n }\n }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"webAudioBusAndSoundSubGraph.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../../types\";\nimport type { AbstractAudioNode } from \"../../abstractAudio/abstractAudioNode\";\nimport type { _AbstractAudioSubNode } from \"../../abstractAudio/subNodes/abstractAudioSubNode\";\nimport { AudioSubNode } from \"../../abstractAudio/subNodes/audioSubNode\";\nimport { _GetSpatialAudioSubNode } from \"../../abstractAudio/subNodes/spatialAudioSubNode\";\nimport { _GetStereoAudioSubNode } from \"../../abstractAudio/subNodes/stereoAudioSubNode\";\nimport type { IVolumeAudioOptions } from \"../../abstractAudio/subNodes/volumeAudioSubNode\";\nimport { _GetVolumeAudioSubNode } from \"../../abstractAudio/subNodes/volumeAudioSubNode\";\nimport type { ISpatialAudioOptions } from \"../../abstractAudio/subProperties/abstractSpatialAudio\";\nimport { _HasSpatialAudioOptions } from \"../../abstractAudio/subProperties/abstractSpatialAudio\";\nimport type { IStereoAudioOptions } from \"../../abstractAudio/subProperties/abstractStereoAudio\";\nimport { _HasStereoAudioOptions } from \"../../abstractAudio/subProperties/abstractStereoAudio\";\nimport type { IWebAudioOutNode, IWebAudioSubNode } from \"../webAudioNode\";\nimport type { _SpatialWebAudioSubNode } from \"./spatialWebAudioSubNode\";\nimport { _CreateSpatialAudioSubNodeAsync } from \"./spatialWebAudioSubNode\";\nimport type { _StereoWebAudioSubNode } from \"./stereoWebAudioSubNode\";\nimport { _CreateStereoAudioSubNodeAsync } from \"./stereoWebAudioSubNode\";\nimport type { _VolumeWebAudioSubNode } from \"./volumeWebAudioSubNode\";\nimport { _WebAudioBaseSubGraph } from \"./webAudioBaseSubGraph\";\n\n/** @internal */\nexport interface IWebAudioBusAndSoundSubGraphOptions extends ISpatialAudioOptions, IStereoAudioOptions, IVolumeAudioOptions {}\n\n/** @internal */\nexport abstract class _WebAudioBusAndSoundSubGraph extends _WebAudioBaseSubGraph {\n private _rootNode: Nullable<GainNode> = null;\n protected abstract readonly _upstreamNodes: Nullable<Set<AbstractAudioNode>>;\n\n protected _inputNode: Nullable<AudioNode> = null;\n\n /** @internal */\n public override async init(options: Partial<IWebAudioBusAndSoundSubGraphOptions>): Promise<void> {\n await super.init(options);\n\n let hasSpatialOptions = false;\n let hasStereoOptions = false;\n\n if ((hasSpatialOptions = _HasSpatialAudioOptions(options))) {\n await this.createAndAddSubNode(AudioSubNode.SPATIAL);\n }\n if ((hasStereoOptions = _HasStereoAudioOptions(options))) {\n await this.createAndAddSubNode(AudioSubNode.STEREO);\n }\n\n await this._createSubNodePromisesResolved();\n\n if (hasSpatialOptions) {\n _GetSpatialAudioSubNode(this)?.setOptions(options);\n }\n if (hasStereoOptions) {\n _GetStereoAudioSubNode(this)?.setOptions(options);\n }\n }\n\n /** @internal */\n public override get _inNode(): Nullable<AudioNode> {\n return this._inputNode;\n }\n\n protected override _createSubNode(name: string): Promise<_AbstractAudioSubNode> {\n try {\n const node = super._createSubNode(name);\n return node;\n } catch (e) {}\n\n switch (name) {\n case AudioSubNode.SPATIAL:\n return _CreateSpatialAudioSubNodeAsync(this._owner.engine);\n case AudioSubNode.STEREO:\n return _CreateStereoAudioSubNodeAsync(this._owner.engine);\n default:\n throw new Error(`Unknown subnode name: ${name}`);\n }\n }\n\n protected override _onSubNodesChanged(): void {\n super._onSubNodesChanged();\n\n const spatialNode = _GetSpatialAudioSubNode(this);\n const stereoNode = _GetStereoAudioSubNode(this);\n const volumeNode = _GetVolumeAudioSubNode(this);\n\n if (spatialNode && spatialNode.getClassName() !== \"_SpatialWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n if (stereoNode && stereoNode.getClassName() !== \"_StereoWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n if (volumeNode && volumeNode.getClassName() !== \"_VolumeWebAudioSubNode\") {\n throw new Error(\"Not a WebAudio subnode.\");\n }\n\n if (spatialNode) {\n spatialNode.disconnectAll();\n\n if (volumeNode) {\n spatialNode.connect(volumeNode);\n }\n }\n\n if (stereoNode) {\n stereoNode.disconnectAll();\n\n if (volumeNode) {\n stereoNode.connect(volumeNode);\n }\n }\n\n if (spatialNode && stereoNode) {\n this._rootNode = new GainNode(this._owner.engine._audioContext);\n this._rootNode.connect((spatialNode as _SpatialWebAudioSubNode)._outNode);\n this._rootNode.connect((stereoNode as _StereoWebAudioSubNode)._outNode);\n } else {\n this._rootNode?.disconnect();\n this._rootNode = null;\n }\n\n let inSubNode: Nullable<IWebAudioSubNode> = null;\n\n let inNode: Nullable<AudioNode> = null;\n\n if (this._rootNode) {\n inNode = this._rootNode;\n } else {\n if (spatialNode) {\n inSubNode = spatialNode as _SpatialWebAudioSubNode;\n } else if (stereoNode) {\n inSubNode = stereoNode as _StereoWebAudioSubNode;\n } else if (volumeNode) {\n inSubNode = volumeNode as _VolumeWebAudioSubNode;\n }\n\n inNode = inSubNode?.node ?? null;\n }\n\n if (this._inputNode !== inNode) {\n // Disconnect the wrapped upstream WebAudio nodes from the old wrapped WebAudio node.\n // The wrapper nodes are unaware of this change.\n if (this._inputNode && this._upstreamNodes) {\n const it = this._upstreamNodes.values();\n for (let next = it.next(); !next.done; next = it.next()) {\n (next.value as IWebAudioOutNode)._outNode?.disconnect(this._inputNode);\n }\n }\n\n this._inputNode = inNode;\n\n // Connect the wrapped upstream WebAudio nodes to the new wrapped WebAudio node.\n // The wrapper nodes are unaware of this change.\n if (inNode && this._upstreamNodes) {\n const it = this._upstreamNodes.values();\n for (let next = it.next(); !next.done; next = it.next()) {\n (next.value as IWebAudioOutNode)._outNode?.connect(inNode);\n }\n }\n }\n }\n}\n"]}
|
|
@@ -27,7 +27,7 @@ class _SpatialWebAudioListener extends _SpatialAudioListener {
|
|
|
27
27
|
/** @internal */
|
|
28
28
|
this.rotationQuaternion = new Quaternion();
|
|
29
29
|
this.engine = engine;
|
|
30
|
-
this._audioContext = engine.
|
|
30
|
+
this._audioContext = engine._audioContext;
|
|
31
31
|
this._updaterComponent = new _SpatialWebAudioUpdaterComponent(this, autoUpdate, minUpdateTime);
|
|
32
32
|
}
|
|
33
33
|
/** @internal */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"spatialWebAudioListener.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/webAudio/subProperties/spatialWebAudioListener.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,wDAAwD,CAAC;AAC/F,OAAO,EAAE,gCAAgC,EAAE,MAAM,+CAA+C,CAAC;AAGjG,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,MAAM,aAAa,GAAG,IAAI,UAAU,EAAE,CAAC;AACvC,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;AAEjC,gBAAgB;AAChB,MAAM,UAAU,2BAA2B,CAAC,MAAuB,EAAE,UAAmB,EAAE,aAAqB;IAC3G,OAAO,IAAI,wBAAwB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC;AAC3E,CAAC;AAED;;;;GAIG;AACH,MAAM,wBAAyB,SAAQ,qBAAqB;IAiBxD,gBAAgB;IAChB,YAAmB,MAAuB,EAAE,UAAmB,EAAE,aAAqB;QAClF,KAAK,EAAE,CAAC;QAjBJ,kBAAa,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,kBAAa,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACxC,4BAAuB,GAAe,IAAI,UAAU,EAAE,CAAC;QAM/D,gBAAgB;QACA,aAAQ,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACnD,gBAAgB;QACA,aAAQ,GAAY,OAAO,CAAC,IAAI,EAAE,CAAC;QACnD,gBAAgB;QACA,uBAAkB,GAAe,IAAI,UAAU,EAAE,CAAC;QAM9D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"spatialWebAudioListener.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/webAudio/subProperties/spatialWebAudioListener.ts"],"names":[],"mappings":"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","sourcesContent":["import { Matrix, Quaternion, Vector3 } from \"../../../Maths/math.vector\";\nimport { _SpatialAudioListener } from \"../../abstractAudio/subProperties/spatialAudioListener\";\nimport { _SpatialWebAudioUpdaterComponent } from \"../components/spatialWebAudioUpdaterComponent\";\nimport type { _WebAudioEngine } from \"../webAudioEngine\";\n\nconst TmpMatrix = Matrix.Zero();\nconst TmpQuaternion = new Quaternion();\nconst TmpVector = Vector3.Zero();\n\n/** @internal */\nexport function _CreateSpatialAudioListener(engine: _WebAudioEngine, autoUpdate: boolean, minUpdateTime: number): _SpatialAudioListener {\n return new _SpatialWebAudioListener(engine, autoUpdate, minUpdateTime);\n}\n\n/**\n * This sub property is not backed by a sub node and all properties are set directly on the audio context listener.\n *\n * @internal\n */\nclass _SpatialWebAudioListener extends _SpatialAudioListener {\n private _audioContext: AudioContext;\n private _lastPosition: Vector3 = Vector3.Zero();\n private _lastRotation: Vector3 = Vector3.Zero();\n private _lastRotationQuaternion: Quaternion = new Quaternion();\n private _updaterComponent: _SpatialWebAudioUpdaterComponent;\n\n /** @internal */\n public readonly engine: _WebAudioEngine;\n\n /** @internal */\n public readonly position: Vector3 = Vector3.Zero();\n /** @internal */\n public readonly rotation: Vector3 = Vector3.Zero();\n /** @internal */\n public readonly rotationQuaternion: Quaternion = new Quaternion();\n\n /** @internal */\n public constructor(engine: _WebAudioEngine, autoUpdate: boolean, minUpdateTime: number) {\n super();\n\n this.engine = engine;\n\n this._audioContext = engine._audioContext;\n this._updaterComponent = new _SpatialWebAudioUpdaterComponent(this, autoUpdate, minUpdateTime);\n }\n\n /** @internal */\n public get minUpdateTime(): number {\n return this._updaterComponent.minUpdateTime;\n }\n\n /** @internal */\n public set minUpdateTime(value: number) {\n this._updaterComponent.minUpdateTime = value;\n }\n\n /** @internal */\n public override dispose(): void {\n super.dispose();\n\n this._updaterComponent.dispose();\n this._updaterComponent = null!;\n }\n\n /** @internal */\n public update(): void {\n if (this.isAttached) {\n this._attacherComponent?.update();\n } else {\n this._updatePosition();\n this._updateRotation();\n }\n }\n\n /** @internal */\n public _updatePosition(): void {\n if (this._lastPosition.equalsWithEpsilon(this.position)) {\n return;\n }\n\n const listener = this._audioContext.listener;\n\n this.engine._setAudioParam(listener.positionX, this.position.x);\n this.engine._setAudioParam(listener.positionY, this.position.y);\n this.engine._setAudioParam(listener.positionZ, this.position.z);\n\n this._lastPosition.copyFrom(this.position);\n }\n\n /** @internal */\n public _updateRotation(): void {\n if (!this._lastRotationQuaternion.equalsWithEpsilon(this.rotationQuaternion)) {\n TmpQuaternion.copyFrom(this.rotationQuaternion);\n this._lastRotationQuaternion.copyFrom(this.rotationQuaternion);\n } else if (!this._lastRotation.equalsWithEpsilon(this.rotation)) {\n Quaternion.FromEulerAnglesToRef(this.rotation.x, this.rotation.y, this.rotation.z, TmpQuaternion);\n this._lastRotation.copyFrom(this.rotation);\n } else {\n return;\n }\n\n Matrix.FromQuaternionToRef(TmpQuaternion, TmpMatrix);\n const listener = this._audioContext.listener;\n\n // NB: The WebAudio API is right-handed.\n Vector3.TransformNormalToRef(Vector3.RightHandedForwardReadOnly, TmpMatrix, TmpVector);\n this.engine._setAudioParam(listener.forwardX, TmpVector.x);\n this.engine._setAudioParam(listener.forwardY, TmpVector.y);\n this.engine._setAudioParam(listener.forwardZ, TmpVector.z);\n\n Vector3.TransformNormalToRef(Vector3.Up(), TmpMatrix, TmpVector);\n this.engine._setAudioParam(listener.upX, TmpVector.x);\n this.engine._setAudioParam(listener.upY, TmpVector.y);\n this.engine._setAudioParam(listener.upZ, TmpVector.z);\n }\n}\n"]}
|
|
@@ -5,7 +5,7 @@ import type { _SpatialAudio } from "../abstractAudio/subProperties/spatialAudio"
|
|
|
5
5
|
import { _StereoAudio } from "../abstractAudio/subProperties/stereoAudio";
|
|
6
6
|
import { _WebAudioBusAndSoundSubGraph } from "./subNodes/webAudioBusAndSoundSubGraph";
|
|
7
7
|
import type { _WebAudioEngine } from "./webAudioEngine";
|
|
8
|
-
import type { IWebAudioSuperNode } from "./webAudioNode";
|
|
8
|
+
import type { IWebAudioInNode, IWebAudioSuperNode } from "./webAudioNode";
|
|
9
9
|
/** @internal */
|
|
10
10
|
export declare class _WebAudioBus extends AudioBus implements IWebAudioSuperNode {
|
|
11
11
|
private _spatial;
|
|
@@ -16,23 +16,23 @@ export declare class _WebAudioBus extends AudioBus implements IWebAudioSuperNode
|
|
|
16
16
|
/** @internal */
|
|
17
17
|
readonly engine: _WebAudioEngine;
|
|
18
18
|
/** @internal */
|
|
19
|
-
readonly audioContext: AudioContext;
|
|
20
|
-
/** @internal */
|
|
21
19
|
constructor(name: string, engine: _WebAudioEngine, options: Partial<IAudioBusOptions>);
|
|
22
20
|
/** @internal */
|
|
23
|
-
|
|
21
|
+
_init(options: Partial<IAudioBusOptions>): Promise<void>;
|
|
24
22
|
/** @internal */
|
|
25
23
|
dispose(): void;
|
|
26
24
|
/** @internal */
|
|
27
|
-
get
|
|
25
|
+
get _inNode(): Nullable<AudioNode>;
|
|
28
26
|
/** @internal */
|
|
29
|
-
get
|
|
27
|
+
get _outNode(): Nullable<AudioNode>;
|
|
30
28
|
/** @internal */
|
|
31
29
|
get spatial(): _SpatialAudio;
|
|
32
30
|
/** @internal */
|
|
33
31
|
get stereo(): _StereoAudio;
|
|
34
32
|
/** @internal */
|
|
35
33
|
getClassName(): string;
|
|
34
|
+
protected _connect(node: IWebAudioInNode): boolean;
|
|
35
|
+
protected _disconnect(node: IWebAudioInNode): boolean;
|
|
36
36
|
private _initSpatialProperty;
|
|
37
37
|
private static _SubGraph;
|
|
38
38
|
}
|
|
@@ -19,10 +19,9 @@ export class _WebAudioBus extends AudioBus {
|
|
|
19
19
|
this._spatialMinUpdateTime = options.spatialMinUpdateTime;
|
|
20
20
|
}
|
|
21
21
|
this._subGraph = new _WebAudioBus._SubGraph(this);
|
|
22
|
-
this.audioContext = engine.audioContext;
|
|
23
22
|
}
|
|
24
23
|
/** @internal */
|
|
25
|
-
async
|
|
24
|
+
async _init(options) {
|
|
26
25
|
if (options.outBus) {
|
|
27
26
|
this.outBus = options.outBus;
|
|
28
27
|
}
|
|
@@ -34,22 +33,22 @@ export class _WebAudioBus extends AudioBus {
|
|
|
34
33
|
if (_HasSpatialAudioOptions(options)) {
|
|
35
34
|
this._initSpatialProperty();
|
|
36
35
|
}
|
|
37
|
-
this.engine.
|
|
36
|
+
this.engine._addNode(this);
|
|
38
37
|
}
|
|
39
38
|
/** @internal */
|
|
40
39
|
dispose() {
|
|
41
40
|
super.dispose();
|
|
42
41
|
this._spatial = null;
|
|
43
42
|
this._stereo = null;
|
|
44
|
-
this.engine.
|
|
43
|
+
this.engine._removeNode(this);
|
|
45
44
|
}
|
|
46
45
|
/** @internal */
|
|
47
|
-
get
|
|
48
|
-
return this._subGraph.
|
|
46
|
+
get _inNode() {
|
|
47
|
+
return this._subGraph._inNode;
|
|
49
48
|
}
|
|
50
49
|
/** @internal */
|
|
51
|
-
get
|
|
52
|
-
return this._subGraph.
|
|
50
|
+
get _outNode() {
|
|
51
|
+
return this._subGraph._outNode;
|
|
53
52
|
}
|
|
54
53
|
/** @internal */
|
|
55
54
|
get spatial() {
|
|
@@ -66,6 +65,26 @@ export class _WebAudioBus extends AudioBus {
|
|
|
66
65
|
getClassName() {
|
|
67
66
|
return "_WebAudioBus";
|
|
68
67
|
}
|
|
68
|
+
_connect(node) {
|
|
69
|
+
const connected = super._connect(node);
|
|
70
|
+
if (!connected) {
|
|
71
|
+
return false;
|
|
72
|
+
}
|
|
73
|
+
if (node._inNode) {
|
|
74
|
+
this._outNode?.connect(node._inNode);
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
77
|
+
}
|
|
78
|
+
_disconnect(node) {
|
|
79
|
+
const disconnected = super._disconnect(node);
|
|
80
|
+
if (!disconnected) {
|
|
81
|
+
return false;
|
|
82
|
+
}
|
|
83
|
+
if (node._inNode) {
|
|
84
|
+
this._outNode?.disconnect(node._inNode);
|
|
85
|
+
}
|
|
86
|
+
return true;
|
|
87
|
+
}
|
|
69
88
|
_initSpatialProperty() {
|
|
70
89
|
if (!this._spatial) {
|
|
71
90
|
this._spatial = new _SpatialWebAudio(this._subGraph, this._spatialAutoUpdate, this._spatialMinUpdateTime);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"webAudioBus.js","sourceRoot":"","sources":["../../../../../dev/core/src/AudioV2/webAudio/webAudioBus.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,OAAO,EAAE,uBAAuB,EAAE,MAAM,qDAAqD,CAAC;AAE9F,OAAO,EAAE,YAAY,EAAE,MAAM,4CAA4C,CAAC;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAInE,gBAAgB;AAChB,MAAM,OAAO,YAAa,SAAQ,QAAQ;
|
|
1
|
+
{"version":3,"file":"webAudioBus.js","sourceRoot":"","sources":["../../../../../dev/core/src/AudioV2/webAudio/webAudioBus.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"core/types\";\nimport type { AbstractAudioNode } from \"../abstractAudio/abstractAudioNode\";\nimport type { IAudioBusOptions } from \"../abstractAudio/audioBus\";\nimport { AudioBus } from \"../abstractAudio/audioBus\";\nimport { _HasSpatialAudioOptions } from \"../abstractAudio/subProperties/abstractSpatialAudio\";\nimport type { _SpatialAudio } from \"../abstractAudio/subProperties/spatialAudio\";\nimport { _StereoAudio } from \"../abstractAudio/subProperties/stereoAudio\";\nimport { _WebAudioBusAndSoundSubGraph } from \"./subNodes/webAudioBusAndSoundSubGraph\";\nimport { _SpatialWebAudio } from \"./subProperties/spatialWebAudio\";\nimport type { _WebAudioEngine } from \"./webAudioEngine\";\nimport type { IWebAudioInNode, IWebAudioSuperNode } from \"./webAudioNode\";\n\n/** @internal */\nexport class _WebAudioBus extends AudioBus implements IWebAudioSuperNode {\n private _spatial: Nullable<_SpatialAudio> = null;\n private readonly _spatialAutoUpdate: boolean = true;\n private readonly _spatialMinUpdateTime: number = 0;\n private _stereo: Nullable<_StereoAudio> = null;\n\n protected _subGraph: _WebAudioBusAndSoundSubGraph;\n\n /** @internal */\n public override readonly engine: _WebAudioEngine;\n\n /** @internal */\n public constructor(name: string, engine: _WebAudioEngine, options: Partial<IAudioBusOptions>) {\n super(name, engine);\n\n if (typeof options.spatialAutoUpdate === \"boolean\") {\n this._spatialAutoUpdate = options.spatialAutoUpdate;\n }\n\n if (typeof options.spatialMinUpdateTime === \"number\") {\n this._spatialMinUpdateTime = options.spatialMinUpdateTime;\n }\n\n this._subGraph = new _WebAudioBus._SubGraph(this);\n }\n\n /** @internal */\n public async _init(options: Partial<IAudioBusOptions>): Promise<void> {\n if (options.outBus) {\n this.outBus = options.outBus;\n } else {\n await this.engine.isReadyPromise;\n this.outBus = this.engine.defaultMainBus;\n }\n\n await this._subGraph.init(options);\n\n if (_HasSpatialAudioOptions(options)) {\n this._initSpatialProperty();\n }\n\n this.engine._addNode(this);\n }\n\n /** @internal */\n public override dispose(): void {\n super.dispose();\n\n this._spatial = null;\n this._stereo = null;\n\n this.engine._removeNode(this);\n }\n\n /** @internal */\n public get _inNode() {\n return this._subGraph._inNode;\n }\n\n /** @internal */\n public get _outNode() {\n return this._subGraph._outNode;\n }\n\n /** @internal */\n public override get spatial(): _SpatialAudio {\n if (this._spatial) {\n return this._spatial;\n }\n return this._initSpatialProperty();\n }\n\n /** @internal */\n public override get stereo(): _StereoAudio {\n return this._stereo ?? (this._stereo = new _StereoAudio(this._subGraph));\n }\n\n /** @internal */\n public getClassName(): string {\n return \"_WebAudioBus\";\n }\n\n protected override _connect(node: IWebAudioInNode): boolean {\n const connected = super._connect(node);\n\n if (!connected) {\n return false;\n }\n\n if (node._inNode) {\n this._outNode?.connect(node._inNode);\n }\n\n return true;\n }\n\n protected override _disconnect(node: IWebAudioInNode): boolean {\n const disconnected = super._disconnect(node);\n\n if (!disconnected) {\n return false;\n }\n\n if (node._inNode) {\n this._outNode?.disconnect(node._inNode);\n }\n\n return true;\n }\n\n private _initSpatialProperty(): _SpatialAudio {\n if (!this._spatial) {\n this._spatial = new _SpatialWebAudio(this._subGraph, this._spatialAutoUpdate, this._spatialMinUpdateTime);\n }\n\n return this._spatial;\n }\n\n private static _SubGraph = class extends _WebAudioBusAndSoundSubGraph {\n protected override _owner: _WebAudioBus;\n\n protected get _downstreamNodes(): Nullable<Set<AbstractAudioNode>> {\n return this._owner._downstreamNodes ?? null;\n }\n\n protected get _upstreamNodes(): Nullable<Set<AbstractAudioNode>> {\n return this._owner._upstreamNodes ?? null;\n }\n };\n}\n"]}
|
|
@@ -62,7 +62,7 @@ export declare class _WebAudioEngine extends AudioEngineV2 {
|
|
|
62
62
|
private readonly _validFormats;
|
|
63
63
|
private _volume;
|
|
64
64
|
/** @internal */
|
|
65
|
-
readonly
|
|
65
|
+
readonly _audioContext: AudioContext;
|
|
66
66
|
/** @internal */
|
|
67
67
|
readonly isReadyPromise: Promise<void>;
|
|
68
68
|
/** @internal */
|
|
@@ -72,11 +72,11 @@ export declare class _WebAudioEngine extends AudioEngineV2 {
|
|
|
72
72
|
/** @internal */
|
|
73
73
|
constructor(options?: Partial<IWebAudioEngineOptions>);
|
|
74
74
|
/** @internal */
|
|
75
|
-
|
|
75
|
+
_init(options: Partial<IWebAudioEngineOptions>): Promise<void>;
|
|
76
76
|
/** @internal */
|
|
77
77
|
get currentTime(): number;
|
|
78
78
|
/** @internal */
|
|
79
|
-
get
|
|
79
|
+
get _inNode(): AudioNode;
|
|
80
80
|
/** @internal */
|
|
81
81
|
get mainOut(): _WebAudioMainOut;
|
|
82
82
|
/** @internal */
|
|
@@ -108,13 +108,13 @@ export declare class _WebAudioEngine extends AudioEngineV2 {
|
|
|
108
108
|
/** @internal */
|
|
109
109
|
resume(): Promise<void>;
|
|
110
110
|
/** @internal */
|
|
111
|
-
|
|
111
|
+
_addMainBus(mainBus: MainAudioBus): void;
|
|
112
112
|
/** @internal */
|
|
113
|
-
|
|
113
|
+
_removeMainBus(mainBus: MainAudioBus): void;
|
|
114
114
|
/** @internal */
|
|
115
|
-
|
|
115
|
+
_addNode(node: AbstractNamedAudioNode): void;
|
|
116
116
|
/** @internal */
|
|
117
|
-
|
|
117
|
+
_removeNode(node: AbstractNamedAudioNode): void;
|
|
118
118
|
/** @internal */
|
|
119
119
|
_setAudioParam(audioParam: AudioParam, value: number): void;
|
|
120
120
|
private _initAudioContext;
|
|
@@ -11,7 +11,7 @@ import { _WebAudioUnmuteUI } from "./webAudioUnmuteUI.js";
|
|
|
11
11
|
*/
|
|
12
12
|
export async function CreateAudioEngineAsync(options = {}) {
|
|
13
13
|
const engine = new _WebAudioEngine(options);
|
|
14
|
-
await engine.
|
|
14
|
+
await engine._init(options);
|
|
15
15
|
return engine;
|
|
16
16
|
}
|
|
17
17
|
const FormatMimeTypes = {
|
|
@@ -53,7 +53,7 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
53
53
|
/** @internal */
|
|
54
54
|
this.userGestureObservable = new Observable();
|
|
55
55
|
this._initAudioContext = async () => {
|
|
56
|
-
this.
|
|
56
|
+
this._audioContext.addEventListener("statechange", this._onAudioContextStateChange);
|
|
57
57
|
this._mainOut = new _WebAudioMainOut(this);
|
|
58
58
|
this._mainOut.volume = this._volume;
|
|
59
59
|
await this.createMainBusAsync("default");
|
|
@@ -76,7 +76,7 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
76
76
|
};
|
|
77
77
|
this._onUserGesture = async () => {
|
|
78
78
|
if (this._resumeOnInteraction) {
|
|
79
|
-
await this.
|
|
79
|
+
await this._audioContext.resume();
|
|
80
80
|
}
|
|
81
81
|
this.userGestureObservable.notifyObservers();
|
|
82
82
|
};
|
|
@@ -87,13 +87,13 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
87
87
|
this._listenerMinUpdateTime = options.listenerMinUpdateTime;
|
|
88
88
|
}
|
|
89
89
|
this._volume = options.volume ?? 1;
|
|
90
|
-
this.
|
|
90
|
+
this._audioContext = options.audioContext ?? new AudioContext();
|
|
91
91
|
if (!options.disableDefaultUI) {
|
|
92
92
|
this._unmuteUI = new _WebAudioUnmuteUI(this, options.defaultUIParentElement);
|
|
93
93
|
}
|
|
94
94
|
}
|
|
95
95
|
/** @internal */
|
|
96
|
-
async
|
|
96
|
+
async _init(options) {
|
|
97
97
|
this._resumeOnInteraction = typeof options.resumeOnInteraction === "boolean" ? options.resumeOnInteraction : true;
|
|
98
98
|
this._resumeOnPause = typeof options.resumeOnPause === "boolean" ? options.resumeOnPause : true;
|
|
99
99
|
this._resumeOnPauseRetryInterval = options.resumeOnPauseRetryInterval ?? 1000;
|
|
@@ -107,11 +107,11 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
107
107
|
}
|
|
108
108
|
/** @internal */
|
|
109
109
|
get currentTime() {
|
|
110
|
-
return this.
|
|
110
|
+
return this._audioContext.currentTime ?? 0;
|
|
111
111
|
}
|
|
112
112
|
/** @internal */
|
|
113
|
-
get
|
|
114
|
-
return this.
|
|
113
|
+
get _inNode() {
|
|
114
|
+
return this._audioContext.destination;
|
|
115
115
|
}
|
|
116
116
|
/** @internal */
|
|
117
117
|
get mainOut() {
|
|
@@ -123,7 +123,7 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
123
123
|
}
|
|
124
124
|
/** @internal */
|
|
125
125
|
get state() {
|
|
126
|
-
return this.
|
|
126
|
+
return this._audioContext.state;
|
|
127
127
|
}
|
|
128
128
|
/** @internal */
|
|
129
129
|
get volume() {
|
|
@@ -143,35 +143,35 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
143
143
|
async createBusAsync(name, options = {}) {
|
|
144
144
|
const module = await import("./webAudioBus.js");
|
|
145
145
|
const bus = new module._WebAudioBus(name, this, options);
|
|
146
|
-
await bus.
|
|
146
|
+
await bus._init(options);
|
|
147
147
|
return bus;
|
|
148
148
|
}
|
|
149
149
|
/** @internal */
|
|
150
150
|
async createMainBusAsync(name, options = {}) {
|
|
151
151
|
const module = await import("./webAudioMainBus.js");
|
|
152
152
|
const bus = new module._WebAudioMainBus(name, this);
|
|
153
|
-
await bus.
|
|
153
|
+
await bus._init(options);
|
|
154
154
|
return bus;
|
|
155
155
|
}
|
|
156
156
|
/** @internal */
|
|
157
157
|
async createSoundAsync(name, source, options = {}) {
|
|
158
158
|
const module = await import("./webAudioStaticSound.js");
|
|
159
159
|
const sound = new module._WebAudioStaticSound(name, this, options);
|
|
160
|
-
await sound.
|
|
160
|
+
await sound._init(source, options);
|
|
161
161
|
return sound;
|
|
162
162
|
}
|
|
163
163
|
/** @internal */
|
|
164
164
|
async createSoundBufferAsync(source, options = {}) {
|
|
165
165
|
const module = await import("./webAudioStaticSound.js");
|
|
166
166
|
const soundBuffer = new module._WebAudioStaticSoundBuffer(this);
|
|
167
|
-
await soundBuffer.
|
|
167
|
+
await soundBuffer._init(source, options);
|
|
168
168
|
return soundBuffer;
|
|
169
169
|
}
|
|
170
170
|
/** @internal */
|
|
171
171
|
async createStreamingSoundAsync(name, source, options = {}) {
|
|
172
172
|
const module = await import("./webAudioStreamingSound.js");
|
|
173
173
|
const sound = new module._WebAudioStreamingSound(name, this, options);
|
|
174
|
-
await sound.
|
|
174
|
+
await sound._init(source, options);
|
|
175
175
|
return sound;
|
|
176
176
|
}
|
|
177
177
|
/** @internal */
|
|
@@ -179,11 +179,11 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
179
179
|
super.dispose();
|
|
180
180
|
this._listener?.dispose();
|
|
181
181
|
this._listener = null;
|
|
182
|
-
if (this.
|
|
183
|
-
this.
|
|
182
|
+
if (this._audioContext.state !== "closed") {
|
|
183
|
+
this._audioContext.close();
|
|
184
184
|
}
|
|
185
185
|
document.removeEventListener("click", this._onUserGesture);
|
|
186
|
-
this.
|
|
186
|
+
this._audioContext.removeEventListener("statechange", this._onAudioContextStateChange);
|
|
187
187
|
this._unmuteUI?.dispose();
|
|
188
188
|
this._unmuteUI = null;
|
|
189
189
|
}
|
|
@@ -213,7 +213,7 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
213
213
|
}
|
|
214
214
|
/** @internal */
|
|
215
215
|
async pause() {
|
|
216
|
-
await this.
|
|
216
|
+
await this._audioContext.suspend();
|
|
217
217
|
this._pauseCalled = true;
|
|
218
218
|
}
|
|
219
219
|
/** @internal */
|
|
@@ -222,24 +222,24 @@ export class _WebAudioEngine extends AudioEngineV2 {
|
|
|
222
222
|
if (this._resumePromise) {
|
|
223
223
|
return this._resumePromise;
|
|
224
224
|
}
|
|
225
|
-
this._resumePromise = this.
|
|
225
|
+
this._resumePromise = this._audioContext.resume();
|
|
226
226
|
return this._resumePromise;
|
|
227
227
|
}
|
|
228
228
|
/** @internal */
|
|
229
|
-
|
|
230
|
-
|
|
229
|
+
_addMainBus(mainBus) {
|
|
230
|
+
super._addMainBus(mainBus);
|
|
231
231
|
}
|
|
232
232
|
/** @internal */
|
|
233
|
-
|
|
234
|
-
|
|
233
|
+
_removeMainBus(mainBus) {
|
|
234
|
+
super._removeMainBus(mainBus);
|
|
235
235
|
}
|
|
236
236
|
/** @internal */
|
|
237
|
-
|
|
238
|
-
|
|
237
|
+
_addNode(node) {
|
|
238
|
+
super._addNode(node);
|
|
239
239
|
}
|
|
240
240
|
/** @internal */
|
|
241
|
-
|
|
242
|
-
|
|
241
|
+
_removeNode(node) {
|
|
242
|
+
super._removeNode(node);
|
|
243
243
|
}
|
|
244
244
|
/** @internal */
|
|
245
245
|
_setAudioParam(audioParam, value) {
|