@babylonjs/core 7.52.1 → 7.52.3
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 +11 -0
- package/AudioV2/abstractAudio/abstractAudioBus.js +10 -0
- package/AudioV2/abstractAudio/abstractAudioBus.js.map +1 -1
- package/AudioV2/abstractAudio/abstractSound.d.ts +11 -5
- package/AudioV2/abstractAudio/abstractSound.js +11 -5
- package/AudioV2/abstractAudio/abstractSound.js.map +1 -1
- package/AudioV2/abstractAudio/audioBus.d.ts +5 -6
- package/AudioV2/abstractAudio/audioBus.js +1 -5
- package/AudioV2/abstractAudio/audioBus.js.map +1 -1
- package/AudioV2/abstractAudio/audioEngineV2.d.ts +1 -2
- package/AudioV2/abstractAudio/audioEngineV2.js +1 -5
- package/AudioV2/abstractAudio/audioEngineV2.js.map +1 -1
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.d.ts +43 -0
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js +71 -0
- package/AudioV2/abstractAudio/components/spatialAudioAttacherComponent.js.map +1 -0
- package/AudioV2/abstractAudio/mainAudioBus.d.ts +2 -2
- package/AudioV2/abstractAudio/mainAudioBus.js.map +1 -1
- package/AudioV2/abstractAudio/staticSound.d.ts +6 -6
- package/AudioV2/abstractAudio/staticSound.js +5 -5
- package/AudioV2/abstractAudio/staticSound.js.map +1 -1
- package/AudioV2/abstractAudio/streamingSound.d.ts +2 -2
- package/AudioV2/abstractAudio/streamingSound.js +3 -3
- package/AudioV2/abstractAudio/streamingSound.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.d.ts +30 -6
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js +44 -21
- package/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.d.ts +24 -0
- package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js +30 -0
- package/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.js.map +1 -0
- package/AudioV2/abstractAudio/subNodes/audioSubNode.d.ts +1 -0
- package/AudioV2/abstractAudio/subNodes/audioSubNode.js +1 -0
- package/AudioV2/abstractAudio/subNodes/audioSubNode.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.d.ts +15 -0
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js +38 -3
- package/AudioV2/abstractAudio/subNodes/spatialAudioSubNode.js.map +1 -1
- package/AudioV2/abstractAudio/subNodes/stereoAudioSubNode.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.d.ts +86 -0
- package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js +29 -0
- package/AudioV2/abstractAudio/subProperties/abstractAudioAnalyzer.js.map +1 -0
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.d.ts +29 -8
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js +1 -0
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudio.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.d.ts +28 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js +5 -1
- package/AudioV2/abstractAudio/subProperties/abstractSpatialAudioListener.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/audioAnalyzer.d.ts +35 -0
- package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js +96 -0
- package/AudioV2/abstractAudio/subProperties/audioAnalyzer.js.map +1 -0
- package/AudioV2/abstractAudio/subProperties/index.d.ts +1 -0
- package/AudioV2/abstractAudio/subProperties/index.js +1 -0
- package/AudioV2/abstractAudio/subProperties/index.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/spatialAudio.d.ts +16 -1
- package/AudioV2/abstractAudio/subProperties/spatialAudio.js +48 -14
- package/AudioV2/abstractAudio/subProperties/spatialAudio.js.map +1 -1
- package/AudioV2/abstractAudio/subProperties/spatialAudioListener.d.ts +21 -0
- package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js +39 -4
- package/AudioV2/abstractAudio/subProperties/spatialAudioListener.js.map +1 -1
- package/AudioV2/index.d.ts +1 -0
- package/AudioV2/index.js +1 -0
- package/AudioV2/index.js.map +1 -1
- package/AudioV2/spatialAudioAttachmentType.d.ts +5 -0
- package/AudioV2/spatialAudioAttachmentType.js +7 -0
- package/AudioV2/spatialAudioAttachmentType.js.map +1 -0
- package/AudioV2/webAudio/components/spatialWebAudioUpdaterComponent.d.ts +13 -0
- package/AudioV2/webAudio/components/spatialWebAudioUpdaterComponent.js +38 -0
- package/AudioV2/webAudio/components/spatialWebAudioUpdaterComponent.js.map +1 -0
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.d.ts +13 -14
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js +39 -39
- package/AudioV2/webAudio/subNodes/spatialWebAudioSubNode.js.map +1 -1
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.d.ts +37 -0
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js +85 -0
- package/AudioV2/webAudio/subNodes/webAudioAnalyzerSubNode.js.map +1 -0
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.d.ts +5 -3
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js +25 -2
- package/AudioV2/webAudio/subNodes/webAudioBaseSubGraph.js.map +1 -1
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.d.ts +2 -1
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js +32 -17
- package/AudioV2/webAudio/subNodes/webAudioBusAndSoundSubGraph.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudio.d.ts +6 -2
- package/AudioV2/webAudio/subProperties/spatialWebAudio.js +13 -15
- package/AudioV2/webAudio/subProperties/spatialWebAudio.js.map +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.d.ts +1 -1
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js +41 -56
- package/AudioV2/webAudio/subProperties/spatialWebAudioListener.js.map +1 -1
- package/AudioV2/webAudio/webAudioBus.d.ts +3 -0
- package/AudioV2/webAudio/webAudioBus.js +23 -2
- package/AudioV2/webAudio/webAudioBus.js.map +1 -1
- package/AudioV2/webAudio/webAudioEngine.d.ts +3 -1
- package/AudioV2/webAudio/webAudioEngine.js +11 -3
- package/AudioV2/webAudio/webAudioEngine.js.map +1 -1
- package/AudioV2/webAudio/webAudioStaticSound.d.ts +3 -0
- package/AudioV2/webAudio/webAudioStaticSound.js +23 -2
- package/AudioV2/webAudio/webAudioStaticSound.js.map +1 -1
- package/AudioV2/webAudio/webAudioStreamingSound.d.ts +3 -0
- package/AudioV2/webAudio/webAudioStreamingSound.js +23 -2
- package/AudioV2/webAudio/webAudioStreamingSound.js.map +1 -1
- package/Engines/WebGPU/webgpuTextureManager.d.ts +0 -1
- package/Engines/WebGPU/webgpuTextureManager.js +2 -57
- package/Engines/WebGPU/webgpuTextureManager.js.map +1 -1
- package/Engines/abstractEngine.d.ts +6 -0
- package/Engines/abstractEngine.js +3 -3
- package/Engines/abstractEngine.js.map +1 -1
- package/Engines/engine.common.js +4 -0
- package/Engines/engine.common.js.map +1 -1
- package/Engines/nativeEngine.d.ts +1 -0
- package/Engines/nativeEngine.js +3 -0
- package/Engines/nativeEngine.js.map +1 -1
- package/Engines/nullEngine.d.ts +1 -0
- package/Engines/nullEngine.js +1 -0
- package/Engines/nullEngine.js.map +1 -1
- package/Engines/thinEngine.d.ts +1 -0
- package/Engines/thinEngine.js +7 -4
- package/Engines/thinEngine.js.map +1 -1
- package/Engines/webgpuEngine.d.ts +2 -1
- package/Engines/webgpuEngine.js +12 -9
- package/Engines/webgpuEngine.js.map +1 -1
- package/FlowGraph/Blocks/Data/flowGraphDataSwitchBlock.d.ts +48 -0
- package/FlowGraph/Blocks/Data/flowGraphDataSwitchBlock.js +54 -0
- package/FlowGraph/Blocks/Data/flowGraphDataSwitchBlock.js.map +1 -0
- package/FlowGraph/Blocks/Data/index.d.ts +1 -0
- package/FlowGraph/Blocks/Data/index.js +1 -0
- package/FlowGraph/Blocks/Data/index.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.d.ts +1 -0
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js +19 -13
- package/FlowGraph/Blocks/Execution/Animation/flowGraphPlayAnimationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js +3 -5
- package/FlowGraph/Blocks/Execution/Animation/flowGraphStopAnimationBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.js +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphCancelDelayBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.js +2 -4
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphSetDelayBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js +1 -1
- package/FlowGraph/Blocks/Execution/ControlFlow/flowGraphThrottleBlock.js.map +1 -1
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js +1 -2
- package/FlowGraph/Blocks/Execution/flowGraphSetPropertyBlock.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockFactory.js +2 -0
- package/FlowGraph/Blocks/flowGraphBlockFactory.js.map +1 -1
- package/FlowGraph/Blocks/flowGraphBlockNames.d.ts +2 -1
- package/FlowGraph/Blocks/flowGraphBlockNames.js +1 -0
- package/FlowGraph/Blocks/flowGraphBlockNames.js.map +1 -1
- package/FlowGraph/CustomTypes/flowGraphInteger.d.ts +1 -0
- package/FlowGraph/CustomTypes/flowGraphInteger.js +3 -0
- package/FlowGraph/CustomTypes/flowGraphInteger.js.map +1 -1
- package/FlowGraph/CustomTypes/flowGraphMatrix.d.ts +2 -0
- package/FlowGraph/CustomTypes/flowGraphMatrix.js +6 -0
- package/FlowGraph/CustomTypes/flowGraphMatrix.js.map +1 -1
- package/FlowGraph/flowGraphExecutionBlock.d.ts +1 -0
- package/FlowGraph/flowGraphExecutionBlock.js +4 -0
- package/FlowGraph/flowGraphExecutionBlock.js.map +1 -1
- package/FlowGraph/utils.d.ts +2 -1
- package/FlowGraph/utils.js +7 -2
- package/FlowGraph/utils.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/bloomPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js +2 -2
- package/FrameGraph/Node/Blocks/PostProcesses/depthOfFieldPostProcessBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.d.ts +126 -0
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js +497 -0
- package/FrameGraph/Node/Blocks/PostProcesses/ssrPostProcessBlock.js.map +1 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.d.ts +6 -0
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js +30 -4
- package/FrameGraph/Node/Blocks/Rendering/geometryRendererBlock.js.map +1 -1
- package/FrameGraph/Node/Blocks/index.d.ts +1 -0
- package/FrameGraph/Node/Blocks/index.js +1 -0
- package/FrameGraph/Node/Blocks/index.js.map +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js +1 -1
- package/FrameGraph/Node/nodeRenderGraph.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/bloomTask.d.ts +2 -3
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js +3 -4
- package/FrameGraph/Tasks/PostProcesses/bloomTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/blurTask.js +2 -2
- package/FrameGraph/Tasks/PostProcesses/blurTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.d.ts +2 -3
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js +4 -5
- package/FrameGraph/Tasks/PostProcesses/depthOfFieldTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.d.ts +6 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js +14 -0
- package/FrameGraph/Tasks/PostProcesses/postProcessTask.js.map +1 -1
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.d.ts +11 -0
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js +18 -0
- package/FrameGraph/Tasks/PostProcesses/ssrBlurTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.d.ts +76 -0
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js +170 -0
- package/FrameGraph/Tasks/PostProcesses/ssrRenderingPipelineTask.js.map +1 -0
- package/FrameGraph/Tasks/PostProcesses/ssrTask.d.ts +16 -0
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js +45 -0
- package/FrameGraph/Tasks/PostProcesses/ssrTask.js.map +1 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.d.ts +10 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js +29 -0
- package/FrameGraph/Tasks/Rendering/geometryRendererTask.js.map +1 -1
- package/FrameGraph/frameGraph.d.ts +7 -3
- package/FrameGraph/frameGraph.js +10 -4
- package/FrameGraph/frameGraph.js.map +1 -1
- package/FrameGraph/frameGraphTextureManager.d.ts +2 -1
- package/FrameGraph/frameGraphTextureManager.js +4 -3
- package/FrameGraph/frameGraphTextureManager.js.map +1 -1
- package/FrameGraph/index.d.ts +1 -0
- package/FrameGraph/index.js +1 -0
- package/FrameGraph/index.js.map +1 -1
- package/Materials/PBR/pbrBaseMaterial.js +1 -1
- package/Materials/PBR/pbrBaseMaterial.js.map +1 -1
- package/Materials/effectRenderer.js +1 -1
- package/Materials/effectRenderer.js.map +1 -1
- package/Materials/material.js +5 -3
- package/Materials/material.js.map +1 -1
- package/Materials/materialHelper.geometryrendering.d.ts +7 -5
- package/Materials/materialHelper.geometryrendering.js +8 -3
- package/Materials/materialHelper.geometryrendering.js.map +1 -1
- package/Materials/standardMaterial.js +1 -1
- package/Materials/standardMaterial.js.map +1 -1
- package/Meshes/geometry.js +18 -7
- package/Meshes/geometry.js.map +1 -1
- package/Meshes/mesh.vertexData.d.ts +1 -1
- package/Meshes/mesh.vertexData.js +2 -1
- package/Meshes/mesh.vertexData.js.map +1 -1
- package/Particles/particleSystemComponent.d.ts +2 -1
- package/Particles/particleSystemComponent.js +2 -2
- package/Particles/particleSystemComponent.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.d.ts +23 -30
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js +226 -411
- package/PostProcesses/RenderPipeline/Pipelines/ssrRenderingPipeline.js.map +1 -1
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.d.ts +222 -0
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js +373 -0
- package/PostProcesses/RenderPipeline/Pipelines/thinSSRRenderingPipeline.js.map +1 -0
- package/PostProcesses/thinDepthOfFieldEffect.d.ts +4 -4
- package/PostProcesses/thinDepthOfFieldEffect.js.map +1 -1
- package/PostProcesses/thinSSRBlurCombinerPostProcess.d.ts +41 -0
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js +185 -0
- package/PostProcesses/thinSSRBlurCombinerPostProcess.js.map +1 -0
- package/PostProcesses/thinSSRBlurPostProcess.d.ts +18 -0
- package/PostProcesses/thinSSRBlurPostProcess.js +47 -0
- package/PostProcesses/thinSSRBlurPostProcess.js.map +1 -0
- package/PostProcesses/thinSSRPostProcess.d.ts +94 -0
- package/PostProcesses/thinSSRPostProcess.js +416 -0
- package/PostProcesses/thinSSRPostProcess.js.map +1 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.d.ts +2 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js +2 -0
- package/Rendering/IBLShadows/iblShadowsRenderPipeline.js.map +1 -1
- package/Rendering/iblCdfGenerator.js +1 -1
- package/Rendering/iblCdfGenerator.js.map +1 -1
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js +13 -2
- package/Shaders/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
- package/ShadersWGSL/geometry.fragment.js +1 -1
- package/ShadersWGSL/geometry.fragment.js.map +1 -1
- package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js +13 -2
- package/ShadersWGSL/screenSpaceReflection2BlurCombiner.fragment.js.map +1 -1
- package/package.json +1 -1
|
@@ -37,7 +37,7 @@ export interface IStaticSoundOptionsBase {
|
|
|
37
37
|
/** @internal */
|
|
38
38
|
export interface IStaticSoundPlayOptionsBase {
|
|
39
39
|
/**
|
|
40
|
-
* The time to wait before playing the sound, in seconds.
|
|
40
|
+
* The time to wait before playing the sound, in seconds. Defaults to `0`.
|
|
41
41
|
*/
|
|
42
42
|
waitTime: number;
|
|
43
43
|
}
|
|
@@ -56,7 +56,7 @@ export interface IStaticSoundPlayOptions extends IAbstractSoundPlayOptions, ISta
|
|
|
56
56
|
*/
|
|
57
57
|
export interface IStaticSoundStopOptions {
|
|
58
58
|
/**
|
|
59
|
-
* The time to wait before stopping the sound, in seconds.
|
|
59
|
+
* The time to wait before stopping the sound, in seconds. Defaults to `0`.
|
|
60
60
|
*/
|
|
61
61
|
waitTime: number;
|
|
62
62
|
}
|
|
@@ -87,9 +87,9 @@ export declare abstract class StaticSound extends AbstractSound {
|
|
|
87
87
|
* This buffer can be shared with other static sounds.
|
|
88
88
|
*/
|
|
89
89
|
abstract readonly buffer: StaticSoundBuffer;
|
|
90
|
-
protected constructor(name: string, engine: AudioEngineV2
|
|
90
|
+
protected constructor(name: string, engine: AudioEngineV2);
|
|
91
91
|
/**
|
|
92
|
-
* The amount of time to play the sound for, in seconds.
|
|
92
|
+
* The amount of time to play the sound for, in seconds. Defaults to `0`.
|
|
93
93
|
* - If less than or equal to `0`, the sound plays for its full duration.
|
|
94
94
|
*/
|
|
95
95
|
get duration(): number;
|
|
@@ -107,13 +107,13 @@ export declare abstract class StaticSound extends AbstractSound {
|
|
|
107
107
|
get loopEnd(): number;
|
|
108
108
|
set loopEnd(value: number);
|
|
109
109
|
/**
|
|
110
|
-
* The pitch of the sound, in cents.
|
|
110
|
+
* The pitch of the sound, in cents. Defaults to `0`.
|
|
111
111
|
* - Gets combined with {@link playbackRate} to determine the final pitch.
|
|
112
112
|
*/
|
|
113
113
|
get pitch(): number;
|
|
114
114
|
set pitch(value: number);
|
|
115
115
|
/**
|
|
116
|
-
* The playback rate of the sound.
|
|
116
|
+
* The playback rate of the sound. Defaults to `1`.
|
|
117
117
|
* - Gets combined with {@link pitch} to determine the final playback rate.
|
|
118
118
|
*/
|
|
119
119
|
get playbackRate(): number;
|
|
@@ -12,11 +12,11 @@ import { AbstractSound } from "./abstractSound.js";
|
|
|
12
12
|
* Static sounds are created by the {@link CreateSoundAsync} function.
|
|
13
13
|
*/
|
|
14
14
|
export class StaticSound extends AbstractSound {
|
|
15
|
-
constructor(name, engine
|
|
16
|
-
super(name, engine
|
|
15
|
+
constructor(name, engine) {
|
|
16
|
+
super(name, engine);
|
|
17
17
|
}
|
|
18
18
|
/**
|
|
19
|
-
* The amount of time to play the sound for, in seconds.
|
|
19
|
+
* The amount of time to play the sound for, in seconds. Defaults to `0`.
|
|
20
20
|
* - If less than or equal to `0`, the sound plays for its full duration.
|
|
21
21
|
*/
|
|
22
22
|
get duration() {
|
|
@@ -46,7 +46,7 @@ export class StaticSound extends AbstractSound {
|
|
|
46
46
|
this._options.loopEnd = value;
|
|
47
47
|
}
|
|
48
48
|
/**
|
|
49
|
-
* The pitch of the sound, in cents.
|
|
49
|
+
* The pitch of the sound, in cents. Defaults to `0`.
|
|
50
50
|
* - Gets combined with {@link playbackRate} to determine the final pitch.
|
|
51
51
|
*/
|
|
52
52
|
get pitch() {
|
|
@@ -56,7 +56,7 @@ export class StaticSound extends AbstractSound {
|
|
|
56
56
|
this._options.pitch = value;
|
|
57
57
|
}
|
|
58
58
|
/**
|
|
59
|
-
* The playback rate of the sound.
|
|
59
|
+
* The playback rate of the sound. Defaults to `1`.
|
|
60
60
|
* - Gets combined with {@link pitch} to determine the final playback rate.
|
|
61
61
|
*/
|
|
62
62
|
get playbackRate() {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"staticSound.js","sourceRoot":"","sources":["../../../../../dev/core/src/AudioV2/abstractAudio/staticSound.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAuEhD;;;;;;;;;;;GAWG;AACH,MAAM,OAAgB,WAAY,SAAQ,aAAa;IAWnD,YAAsB,IAAY,EAAE,MAAqB
|
|
1
|
+
{"version":3,"file":"staticSound.js","sourceRoot":"","sources":["../../../../../dev/core/src/AudioV2/abstractAudio/staticSound.ts"],"names":[],"mappings":"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","sourcesContent":["import { SoundState } from \"../soundState\";\nimport type { IAbstractSoundOptions, IAbstractSoundPlayOptions, IAbstractSoundStoredOptions } from \"./abstractSound\";\nimport { AbstractSound } from \"./abstractSound\";\nimport type { AudioEngineV2 } from \"./audioEngineV2\";\nimport type { IStaticSoundBufferOptions, StaticSoundBuffer } from \"./staticSoundBuffer\";\nimport type { _StaticSoundInstance } from \"./staticSoundInstance\";\n\n/** @internal */\nexport interface IStaticSoundOptionsBase {\n /**\n * The amount of time to play the sound for, in seconds. Defaults to `0`.\n * - If less than or equal to `0`, the sound plays for its full duration.\n */\n duration: number;\n /**\n * The end of the loop range in seconds. Defaults to `0`.\n * - If less than or equal to `0`, the loop plays for the sound's full duration.\n * - Has no effect if {@link loop} is `false`.\n */\n loopEnd: number;\n /**\n * The start of the loop range in seconds. Defaults to `0`.\n * - If less than or equal to `0`, the loop starts at the beginning of the sound.\n * - Has no effect if {@link loop} is `false`.\n *\n */\n loopStart: number;\n /**\n * The pitch of the sound, in cents. Defaults to `0`.\n * - Can be combined with {@link playbackRate}.\n */\n pitch: number;\n /**\n * The playback rate of the sound. Defaults to `1`.\n * - Can be combined with {@link pitch}.\n */\n playbackRate: number;\n}\n\n/** @internal */\nexport interface IStaticSoundPlayOptionsBase {\n /**\n * The time to wait before playing the sound, in seconds. Defaults to `0`.\n */\n waitTime: number;\n}\n\n/**\n * Options for creating a static sound.\n */\nexport interface IStaticSoundOptions extends IAbstractSoundOptions, IStaticSoundBufferOptions, IStaticSoundStoredOptions {}\n\n/**\n * Options for playing a static sound.\n */\nexport interface IStaticSoundPlayOptions extends IAbstractSoundPlayOptions, IStaticSoundOptionsBase, IStaticSoundPlayOptionsBase {}\n\n/**\n * Options for stopping a static sound.\n */\nexport interface IStaticSoundStopOptions {\n /**\n * The time to wait before stopping the sound, in seconds. Defaults to `0`.\n */\n waitTime: number;\n}\n\n/**\n * Options stored in a static sound.\n * @internal\n */\nexport interface IStaticSoundStoredOptions extends IAbstractSoundStoredOptions, IStaticSoundOptionsBase {}\n\n/**\n * Abstract class representing a static sound.\n *\n * A static sound has a sound buffer that is loaded into memory all at once. This allows it to have more capabilities\n * than a streaming sound, such as loop points and playback rate changes, but it also means that the sound must be\n * fully downloaded and decoded before it can be played, which may take a long time for sounds with long durations.\n *\n * To prevent downloading and decoding a sound multiple times, a sound's buffer can be shared with other sounds.\n * See {@link CreateSoundBufferAsync}, {@link StaticSoundBuffer} and {@link StaticSound.buffer} for more information.\n *\n * Static sounds are created by the {@link CreateSoundAsync} function.\n */\nexport abstract class StaticSound extends AbstractSound {\n protected override _instances: Set<_StaticSoundInstance>;\n protected abstract override readonly _options: IStaticSoundStoredOptions;\n\n /**\n * The sound buffer that the sound uses.\n *\n * This buffer can be shared with other static sounds.\n */\n public abstract readonly buffer: StaticSoundBuffer;\n\n protected constructor(name: string, engine: AudioEngineV2) {\n super(name, engine);\n }\n\n /**\n * The amount of time to play the sound for, in seconds. Defaults to `0`.\n * - If less than or equal to `0`, the sound plays for its full duration.\n */\n public get duration(): number {\n return this._options.duration;\n }\n\n public set duration(value: number) {\n this._options.duration = value;\n }\n\n /**\n * The start of the loop range, in seconds. Defaults to `0`.\n * - If less than or equal to `0`, the loop starts at the beginning of the sound.\n */\n public get loopStart(): number {\n return this._options.loopStart;\n }\n\n public set loopStart(value: number) {\n this._options.loopStart = value;\n }\n\n /**\n * The end of the loop range, in seconds. Defaults to `0`.\n * - If less than or equal to `0`, the loop plays for the sound's full duration.\n */\n public get loopEnd(): number {\n return this._options.loopEnd;\n }\n\n public set loopEnd(value: number) {\n this._options.loopEnd = value;\n }\n\n /**\n * The pitch of the sound, in cents. Defaults to `0`.\n * - Gets combined with {@link playbackRate} to determine the final pitch.\n */\n public get pitch(): number {\n return this._options.pitch;\n }\n\n public set pitch(value: number) {\n this._options.pitch = value;\n }\n\n /**\n * The playback rate of the sound. Defaults to `1`.\n * - Gets combined with {@link pitch} to determine the final playback rate.\n */\n public get playbackRate(): number {\n return this._options.playbackRate;\n }\n\n public set playbackRate(value: number) {\n this._options.playbackRate = value;\n }\n\n protected abstract override _createInstance(): _StaticSoundInstance;\n\n /**\n * Plays the sound.\n * - Triggers `onEndedObservable` if played for the full duration and the `loop` option is not set.\n * @param options The options to use when playing the sound. Options set here override the sound's options.\n */\n public play(options: Partial<IStaticSoundPlayOptions> = {}): void {\n if (this.state === SoundState.Paused) {\n this.resume();\n return;\n }\n\n options.duration ??= this.duration;\n options.loop ??= this.loop;\n options.loopStart ??= this.loopStart;\n options.loopEnd ??= this.loopEnd;\n options.pitch ??= this.pitch;\n options.playbackRate ??= this.playbackRate;\n options.startOffset ??= this.startOffset;\n options.volume ??= 1;\n options.waitTime ??= 0;\n\n const instance = this._createInstance();\n this._beforePlay(instance);\n instance.play(options);\n this._afterPlay(instance);\n\n this._stopExcessInstances();\n }\n\n /**\n * Stops the sound.\n * - Triggers `onEndedObservable` if the sound is playing.\n * @param options - The options to use when stopping the sound.\n */\n public stop(options: Partial<IStaticSoundStopOptions> = {}): void {\n if (options.waitTime && 0 < options.waitTime) {\n this._setState(SoundState.Stopping);\n } else {\n this._setState(SoundState.Stopped);\n }\n\n if (!this._instances) {\n return;\n }\n\n for (const instance of Array.from(this._instances)) {\n instance.stop(options);\n }\n }\n}\n"]}
|
|
@@ -41,9 +41,9 @@ export interface IStreamingSoundStoredOptions extends IAbstractSoundStoredOption
|
|
|
41
41
|
export declare abstract class StreamingSound extends AbstractSound {
|
|
42
42
|
private _preloadedInstances;
|
|
43
43
|
protected abstract readonly _options: IStreamingSoundStoredOptions;
|
|
44
|
-
protected constructor(name: string, engine: AudioEngineV2
|
|
44
|
+
protected constructor(name: string, engine: AudioEngineV2);
|
|
45
45
|
/**
|
|
46
|
-
* The number of instances to preload.
|
|
46
|
+
* The number of instances to preload. Defaults to `1`.
|
|
47
47
|
*/
|
|
48
48
|
get preloadCount(): number;
|
|
49
49
|
/**
|
|
@@ -13,12 +13,12 @@ import { AbstractSound } from "./abstractSound.js";
|
|
|
13
13
|
* Streaming sounds are created by the {@link CreateStreamingSoundAsync} function.
|
|
14
14
|
*/
|
|
15
15
|
export class StreamingSound extends AbstractSound {
|
|
16
|
-
constructor(name, engine
|
|
17
|
-
super(name, engine
|
|
16
|
+
constructor(name, engine) {
|
|
17
|
+
super(name, engine);
|
|
18
18
|
this._preloadedInstances = new Array();
|
|
19
19
|
}
|
|
20
20
|
/**
|
|
21
|
-
* The number of instances to preload.
|
|
21
|
+
* The number of instances to preload. Defaults to `1`.
|
|
22
22
|
*/
|
|
23
23
|
get preloadCount() {
|
|
24
24
|
return this._options.preloadCount ?? 1;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"streamingSound.js","sourceRoot":"","sources":["../../../../../dev/core/src/AudioV2/abstractAudio/streamingSound.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4BhD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAgB,cAAe,SAAQ,aAAa;IAKtD,YAAsB,IAAY,EAAE,MAAqB
|
|
1
|
+
{"version":3,"file":"streamingSound.js","sourceRoot":"","sources":["../../../../../dev/core/src/AudioV2/abstractAudio/streamingSound.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AA4BhD;;;;;;;;;;;;GAYG;AACH,MAAM,OAAgB,cAAe,SAAQ,aAAa;IAKtD,YAAsB,IAAY,EAAE,MAAqB;QACrD,KAAK,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QALhB,wBAAmB,GAAG,IAAI,KAAK,EAA2B,CAAC;IAMnE,CAAC;IAED;;OAEG;IACH,IAAW,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,IAAW,qBAAqB;QAC5B,OAAO,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC;IAC3C,CAAC;IAED;;;OAGG;IACI,eAAe;QAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QAExC,IAAI,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;QAErC,OAAO,QAAQ,CAAC,gBAAgB,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,KAAa;QACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7B,IAAI,CAAC,eAAe,EAAE,CAAC;QAC3B,CAAC;QAED,MAAM,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAC7F,CAAC;IAED;;;;OAIG;IACI,IAAI,CAAC,UAA+C,EAAE;QACzD,IAAI,IAAI,CAAC,KAAK,8BAAsB,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,OAAO;QACX,CAAC;QAED,IAAI,QAAiC,CAAC;QAEtC,IAAI,IAAI,CAAC,qBAAqB,GAAG,CAAC,EAAE,CAAC;YACjC,QAAQ,GAAG,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC;YACvC,QAAQ,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACxC,IAAI,CAAC,wBAAwB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,QAAQ,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACtC,CAAC;QAED,MAAM,sBAAsB,GAAG,GAAG,EAAE;YAChC,IAAI,QAAQ,CAAC,KAAK,+BAAuB,EAAE,CAAC;gBACxC,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,QAAQ,CAAC,wBAAwB,CAAC,cAAc,CAAC,sBAAsB,CAAC,CAAC;YAC7E,CAAC;QACL,CAAC,CAAC;QACF,QAAQ,CAAC,wBAAwB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QAE9D,OAAO,CAAC,WAAW,KAAnB,OAAO,CAAC,WAAW,GAAK,IAAI,CAAC,WAAW,EAAC;QACzC,OAAO,CAAC,IAAI,KAAZ,OAAO,CAAC,IAAI,GAAK,IAAI,CAAC,IAAI,EAAC;QAC3B,OAAO,CAAC,MAAM,KAAd,OAAO,CAAC,MAAM,GAAK,CAAC,EAAC;QAErB,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC3B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAED;;OAEG;IACI,IAAI;QACP,IAAI,CAAC,SAAS,4BAAoB,CAAC;QAEnC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO;QACX,CAAC;QAED,KAAK,MAAM,QAAQ,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;YACjD,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpB,CAAC;IACL,CAAC;IAIO,qBAAqB,CAAC,QAAiC;QAC3D,IAAI,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;IAEO,wBAAwB,CAAC,QAAiC;QAC9D,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;YACf,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACL,CAAC;CACJ","sourcesContent":["import { SoundState } from \"../soundState\";\nimport type { IAbstractSoundOptions, IAbstractSoundPlayOptions, IAbstractSoundStoredOptions } from \"./abstractSound\";\nimport { AbstractSound } from \"./abstractSound\";\nimport type { AudioEngineV2 } from \"./audioEngineV2\";\nimport type { _StreamingSoundInstance } from \"./streamingSoundInstance\";\n\n/** @internal */\nexport interface IStreamingSoundOptionsBase {\n /**\n * The number of instances to preload. Defaults to 1.\n * */\n preloadCount: number;\n}\n\n/**\n * Options for creating a streaming sound.\n */\nexport interface IStreamingSoundOptions extends IAbstractSoundOptions, IStreamingSoundOptionsBase {}\n\n/**\n * Options for playing a streaming sound.\n */\nexport interface IStreamingSoundPlayOptions extends IAbstractSoundPlayOptions {}\n\n/**\n * Options stored in a streaming sound.\n * @internal\n */\nexport interface IStreamingSoundStoredOptions extends IAbstractSoundStoredOptions, IStreamingSoundOptionsBase {}\n\n/**\n * Abstract class representing a streaming sound.\n *\n * A streaming sound has a sound buffer that is loaded into memory in chunks as it is played. This allows it to be played\n * more quickly than a static sound, but it also means that it cannot have loop points or playback rate changes.\n *\n * Due to the way streaming sounds are typically implemented, there can be a significant delay when attempting to play\n * a streaming sound for the first time. To prevent this delay, it is recommended to preload instances of the sound\n * using the {@link IStreamingSoundStoredOptions.preloadCount} options, or the {@link preloadInstance} and\n * {@link preloadInstances} methods before calling the `play` method.\n *\n * Streaming sounds are created by the {@link CreateStreamingSoundAsync} function.\n */\nexport abstract class StreamingSound extends AbstractSound {\n private _preloadedInstances = new Array<_StreamingSoundInstance>();\n\n protected abstract override readonly _options: IStreamingSoundStoredOptions;\n\n protected constructor(name: string, engine: AudioEngineV2) {\n super(name, engine);\n }\n\n /**\n * The number of instances to preload. Defaults to `1`.\n */\n public get preloadCount(): number {\n return this._options.preloadCount ?? 1;\n }\n\n /**\n * Returns the number of instances that have been preloaded.\n */\n public get preloadCompletedCount(): number {\n return this._preloadedInstances.length;\n }\n\n /**\n * Preloads an instance of the sound.\n * @returns A promise that resolves when the instance is preloaded.\n */\n public preloadInstance(): Promise<void> {\n const instance = this._createInstance();\n\n this._addPreloadedInstance(instance);\n\n return instance.preloadedPromise;\n }\n\n /**\n * Preloads the given number of instances of the sound.\n * @param count - The number of instances to preload.\n * @returns A promise that resolves when all instances are preloaded.\n */\n public async preloadInstances(count: number): Promise<void> {\n for (let i = 0; i < count; i++) {\n this.preloadInstance();\n }\n\n await Promise.all(this._preloadedInstances.map((instance) => instance.preloadedPromise));\n }\n\n /**\n * Plays the sound.\n * - Triggers `onEndedObservable` if played for the full duration and the `loop` option is not set.\n * @param options The options to use when playing the sound. Options set here override the sound's options.\n */\n public play(options: Partial<IStreamingSoundPlayOptions> = {}): void {\n if (this.state === SoundState.Paused) {\n this.resume();\n return;\n }\n\n let instance: _StreamingSoundInstance;\n\n if (this.preloadCompletedCount > 0) {\n instance = this._preloadedInstances[0];\n instance.startOffset = this.startOffset;\n this._removePreloadedInstance(instance);\n } else {\n instance = this._createInstance();\n }\n\n const onInstanceStateChanged = () => {\n if (instance.state === SoundState.Started) {\n this._stopExcessInstances();\n instance.onStateChangedObservable.removeCallback(onInstanceStateChanged);\n }\n };\n instance.onStateChangedObservable.add(onInstanceStateChanged);\n\n options.startOffset ??= this.startOffset;\n options.loop ??= this.loop;\n options.volume ??= 1;\n\n this._beforePlay(instance);\n instance.play(options);\n this._afterPlay(instance);\n }\n\n /**\n * Stops the sound.\n */\n public stop(): void {\n this._setState(SoundState.Stopped);\n\n if (!this._instances) {\n return;\n }\n\n for (const instance of Array.from(this._instances)) {\n instance.stop();\n }\n }\n\n protected abstract override _createInstance(): _StreamingSoundInstance;\n\n private _addPreloadedInstance(instance: _StreamingSoundInstance): void {\n if (!this._preloadedInstances.includes(instance)) {\n this._preloadedInstances.push(instance);\n }\n }\n\n private _removePreloadedInstance(instance: _StreamingSoundInstance): void {\n const index = this._preloadedInstances.indexOf(instance);\n if (index !== -1) {\n this._preloadedInstances.splice(index, 1);\n }\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Nullable } from "../../../types";
|
|
2
|
-
import type { AbstractNamedAudioNode } from "../abstractAudioNode";
|
|
3
2
|
import type { _AbstractAudioSubNode } from "./abstractAudioSubNode";
|
|
3
|
+
import type { AudioSubNode } from "./audioSubNode";
|
|
4
4
|
/**
|
|
5
5
|
* Adds common sub graph functionality to an audio node.
|
|
6
6
|
*
|
|
@@ -18,6 +18,7 @@ import type { _AbstractAudioSubNode } from "./abstractAudioSubNode";
|
|
|
18
18
|
*/
|
|
19
19
|
export declare abstract class _AbstractAudioSubGraph {
|
|
20
20
|
private _createSubNodePromises;
|
|
21
|
+
private _isDisposed;
|
|
21
22
|
private _subNodes;
|
|
22
23
|
/**
|
|
23
24
|
* Executes the given callback with the named sub node, creating the sub node if needed.
|
|
@@ -27,27 +28,50 @@ export declare abstract class _AbstractAudioSubGraph {
|
|
|
27
28
|
*
|
|
28
29
|
* @param name The name of the sub node
|
|
29
30
|
* @param callback The function to call with the named sub node
|
|
31
|
+
*
|
|
32
|
+
* @internal
|
|
33
|
+
*/
|
|
34
|
+
callOnSubNode<T extends _AbstractAudioSubNode>(name: AudioSubNode, callback: (node: T) => void): void;
|
|
35
|
+
/**
|
|
36
|
+
* Creates the named subnode and adds it to the sub graph.
|
|
37
|
+
*
|
|
38
|
+
* @param name The name of the sub node.
|
|
39
|
+
* @returns A promise that resolves to the created sub node.
|
|
40
|
+
*
|
|
41
|
+
* @internal
|
|
30
42
|
*/
|
|
31
|
-
|
|
43
|
+
createAndAddSubNode(name: AudioSubNode): Promise<_AbstractAudioSubNode>;
|
|
32
44
|
/**
|
|
33
45
|
* Releases associated resources.
|
|
46
|
+
*
|
|
47
|
+
* @internal
|
|
34
48
|
*/
|
|
35
49
|
dispose(): void;
|
|
36
50
|
/**
|
|
37
51
|
* Gets a previously created sub node.
|
|
52
|
+
*
|
|
38
53
|
* @param name - The name of the sub node
|
|
39
54
|
* @returns The named sub node, or `null` if it has not been created, yet
|
|
55
|
+
*
|
|
40
56
|
* @internal
|
|
41
57
|
* */
|
|
42
|
-
getSubNode<T extends
|
|
43
|
-
|
|
58
|
+
getSubNode<T extends _AbstractAudioSubNode>(name: string): Nullable<T>;
|
|
59
|
+
/**
|
|
60
|
+
* Removes a sub node from the sub graph.
|
|
61
|
+
*
|
|
62
|
+
* @param subNode - The sub node to remove
|
|
63
|
+
* @returns A promise that resolves when the sub node is removed
|
|
64
|
+
*
|
|
65
|
+
* @internal
|
|
66
|
+
*/
|
|
67
|
+
removeSubNode(subNode: _AbstractAudioSubNode): Promise<void>;
|
|
68
|
+
protected abstract _createSubNode(name: string): Promise<_AbstractAudioSubNode>;
|
|
44
69
|
/**
|
|
45
70
|
* Called when sub-nodes are added or removed.
|
|
46
71
|
* - Override this to connect and reconnect sub-nodes as needed.
|
|
47
72
|
*/
|
|
48
|
-
protected _onSubNodesChanged(): void;
|
|
73
|
+
protected abstract _onSubNodesChanged(): void;
|
|
49
74
|
protected _createSubNodePromisesResolved(): Promise<_AbstractAudioSubNode[]>;
|
|
50
75
|
private _addSubNode;
|
|
51
|
-
protected _createAndAddSubNode(name: string): Promise<_AbstractAudioSubNode>;
|
|
52
76
|
private _onSubNodeDisposed;
|
|
53
77
|
}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
export class _AbstractAudioSubGraph {
|
|
17
17
|
constructor() {
|
|
18
18
|
this._createSubNodePromises = {};
|
|
19
|
+
this._isDisposed = false;
|
|
19
20
|
this._subNodes = {};
|
|
20
21
|
this._onSubNodeDisposed = (node) => {
|
|
21
22
|
const subNode = node;
|
|
@@ -31,6 +32,8 @@ export class _AbstractAudioSubGraph {
|
|
|
31
32
|
*
|
|
32
33
|
* @param name The name of the sub node
|
|
33
34
|
* @param callback The function to call with the named sub node
|
|
35
|
+
*
|
|
36
|
+
* @internal
|
|
34
37
|
*/
|
|
35
38
|
callOnSubNode(name, callback) {
|
|
36
39
|
const node = this.getSubNode(name);
|
|
@@ -38,15 +41,34 @@ export class _AbstractAudioSubGraph {
|
|
|
38
41
|
callback(node);
|
|
39
42
|
return;
|
|
40
43
|
}
|
|
41
|
-
const promise = this._createSubNodePromises[name] ?? this.
|
|
44
|
+
const promise = this._createSubNodePromises[name] ?? this.createAndAddSubNode(name);
|
|
42
45
|
promise.then((node) => {
|
|
43
46
|
callback(node);
|
|
44
47
|
});
|
|
45
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates the named subnode and adds it to the sub graph.
|
|
51
|
+
*
|
|
52
|
+
* @param name The name of the sub node.
|
|
53
|
+
* @returns A promise that resolves to the created sub node.
|
|
54
|
+
*
|
|
55
|
+
* @internal
|
|
56
|
+
*/
|
|
57
|
+
createAndAddSubNode(name) {
|
|
58
|
+
var _a;
|
|
59
|
+
(_a = this._createSubNodePromises)[name] || (_a[name] = this._createSubNode(name).then((node) => {
|
|
60
|
+
this._addSubNode(node);
|
|
61
|
+
return node;
|
|
62
|
+
}));
|
|
63
|
+
return this._createSubNodePromises[name];
|
|
64
|
+
}
|
|
46
65
|
/**
|
|
47
66
|
* Releases associated resources.
|
|
67
|
+
*
|
|
68
|
+
* @internal
|
|
48
69
|
*/
|
|
49
70
|
dispose() {
|
|
71
|
+
this._isDisposed = true;
|
|
50
72
|
const subNodes = Object.values(this._subNodes);
|
|
51
73
|
for (const subNode of subNodes) {
|
|
52
74
|
subNode.dispose();
|
|
@@ -56,42 +78,43 @@ export class _AbstractAudioSubGraph {
|
|
|
56
78
|
}
|
|
57
79
|
/**
|
|
58
80
|
* Gets a previously created sub node.
|
|
81
|
+
*
|
|
59
82
|
* @param name - The name of the sub node
|
|
60
83
|
* @returns The named sub node, or `null` if it has not been created, yet
|
|
84
|
+
*
|
|
61
85
|
* @internal
|
|
62
86
|
* */
|
|
63
87
|
getSubNode(name) {
|
|
64
88
|
return this._subNodes[name] ?? null;
|
|
65
89
|
}
|
|
66
90
|
/**
|
|
67
|
-
*
|
|
68
|
-
*
|
|
91
|
+
* Removes a sub node from the sub graph.
|
|
92
|
+
*
|
|
93
|
+
* @param subNode - The sub node to remove
|
|
94
|
+
* @returns A promise that resolves when the sub node is removed
|
|
95
|
+
*
|
|
96
|
+
* @internal
|
|
69
97
|
*/
|
|
70
|
-
|
|
98
|
+
async removeSubNode(subNode) {
|
|
99
|
+
await this._createSubNodePromisesResolved();
|
|
100
|
+
const name = subNode.name;
|
|
101
|
+
if (this._subNodes[name]) {
|
|
102
|
+
delete this._subNodes[name];
|
|
103
|
+
}
|
|
104
|
+
delete this._createSubNodePromises[name];
|
|
105
|
+
this._onSubNodesChanged();
|
|
106
|
+
}
|
|
71
107
|
_createSubNodePromisesResolved() {
|
|
72
108
|
return Promise.all(Object.values(this._createSubNodePromises));
|
|
73
109
|
}
|
|
74
110
|
_addSubNode(node) {
|
|
111
|
+
if (this._isDisposed) {
|
|
112
|
+
node.dispose();
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
75
115
|
this._subNodes[node.name] = node;
|
|
76
116
|
node.onDisposeObservable.addOnce(this._onSubNodeDisposed);
|
|
77
117
|
this._onSubNodesChanged();
|
|
78
118
|
}
|
|
79
|
-
_createAndAddSubNode(name) {
|
|
80
|
-
const promise = this._createSubNode(name);
|
|
81
|
-
if (!promise) {
|
|
82
|
-
return Promise.reject(`Failed to create subnode "${name}"`);
|
|
83
|
-
}
|
|
84
|
-
this._createSubNodePromises[name] = new Promise((resolve, reject) => {
|
|
85
|
-
promise
|
|
86
|
-
.then((node) => {
|
|
87
|
-
this._addSubNode(node);
|
|
88
|
-
resolve(node);
|
|
89
|
-
})
|
|
90
|
-
.catch((error) => {
|
|
91
|
-
reject(error);
|
|
92
|
-
});
|
|
93
|
-
});
|
|
94
|
-
return promise;
|
|
95
|
-
}
|
|
96
119
|
}
|
|
97
120
|
//# sourceMappingURL=abstractAudioSubGraph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abstractAudioSubGraph.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"abstractAudioSubGraph.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/abstractAudio/subNodes/abstractAudioSubGraph.ts"],"names":[],"mappings":"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","sourcesContent":["import type { Nullable } from \"../../../types\";\nimport type { AbstractAudioNode, AbstractNamedAudioNode } from \"../abstractAudioNode\";\nimport type { _AbstractAudioSubNode } from \"./abstractAudioSubNode\";\nimport type { AudioSubNode } from \"./audioSubNode\";\n\n/**\n * Adds common sub graph functionality to an audio node.\n *\n * Audio nodes such as static sounds, streaming sounds, and buses can use audio sub graphs to process audio internally\n * before sending it to connected downstream audio nodes. This is useful for applying effects, spatial audio, and other\n * audio processing tasks common to multiple audio node classes.\n *\n * A key feature of audio sub graphs is their audio sub nodes are created asynchronously on demand so the minimum set\n * of sub nodes are used at all times to save memory and CPU resources. The tradeoff is a small delay when first\n * setting a property backed by a sub node. This delay is avoided by using the appropriate options to initialize the\n * sub node on creation, e.g. `spatialEnabled` and `stereoEnabled`, or by setting any creation option backed by the\n * sub node, e.g. `spatialPosition` and `stereoPan`.\n *\n * @internal\n */\nexport abstract class _AbstractAudioSubGraph {\n private _createSubNodePromises: { [key: string]: Promise<_AbstractAudioSubNode> } = {};\n private _isDisposed = false;\n private _subNodes: { [key: string]: AbstractNamedAudioNode } = {};\n\n /**\n * Executes the given callback with the named sub node, creating the sub node if needed.\n *\n * Note that `callback` is executed synchronously if the sub node already exists, otherwise the sub node is created\n * asynchronously before `callback` is executed.\n *\n * @param name The name of the sub node\n * @param callback The function to call with the named sub node\n *\n * @internal\n */\n public callOnSubNode<T extends _AbstractAudioSubNode>(name: AudioSubNode, callback: (node: T) => void): void {\n const node = this.getSubNode(name);\n if (node) {\n callback(node as T);\n return;\n }\n\n const promise = this._createSubNodePromises[name] ?? this.createAndAddSubNode(name);\n\n promise.then((node) => {\n callback(node as T);\n });\n }\n\n /**\n * Creates the named subnode and adds it to the sub graph.\n *\n * @param name The name of the sub node.\n * @returns A promise that resolves to the created sub node.\n *\n * @internal\n */\n public createAndAddSubNode(name: AudioSubNode): Promise<_AbstractAudioSubNode> {\n this._createSubNodePromises[name] ||= this._createSubNode(name).then((node) => {\n this._addSubNode(node);\n return node;\n });\n\n return this._createSubNodePromises[name];\n }\n\n /**\n * Releases associated resources.\n *\n * @internal\n */\n public dispose() {\n this._isDisposed = true;\n\n const subNodes = Object.values(this._subNodes);\n for (const subNode of subNodes) {\n subNode.dispose();\n }\n\n this._subNodes = {};\n this._createSubNodePromises = {};\n }\n\n /**\n * Gets a previously created sub node.\n *\n * @param name - The name of the sub node\n * @returns The named sub node, or `null` if it has not been created, yet\n *\n * @internal\n * */\n public getSubNode<T extends _AbstractAudioSubNode>(name: string): Nullable<T> {\n return (this._subNodes[name] as T) ?? null;\n }\n\n /**\n * Removes a sub node from the sub graph.\n *\n * @param subNode - The sub node to remove\n * @returns A promise that resolves when the sub node is removed\n *\n * @internal\n */\n public async removeSubNode(subNode: _AbstractAudioSubNode): Promise<void> {\n await this._createSubNodePromisesResolved();\n\n const name = subNode.name;\n if (this._subNodes[name]) {\n delete this._subNodes[name];\n }\n\n delete this._createSubNodePromises[name];\n\n this._onSubNodesChanged();\n }\n\n protected abstract _createSubNode(name: string): Promise<_AbstractAudioSubNode>;\n\n /**\n * Called when sub-nodes are added or removed.\n * - Override this to connect and reconnect sub-nodes as needed.\n */\n protected abstract _onSubNodesChanged(): void;\n\n protected _createSubNodePromisesResolved(): Promise<_AbstractAudioSubNode[]> {\n return Promise.all(Object.values(this._createSubNodePromises));\n }\n\n private _addSubNode(node: AbstractNamedAudioNode): void {\n if (this._isDisposed) {\n node.dispose();\n return;\n }\n\n this._subNodes[node.name] = node;\n\n node.onDisposeObservable.addOnce(this._onSubNodeDisposed);\n\n this._onSubNodesChanged();\n }\n\n private _onSubNodeDisposed = (node: AbstractAudioNode) => {\n const subNode = node as AbstractNamedAudioNode;\n\n delete this._subNodes[subNode.name];\n\n this._onSubNodesChanged();\n };\n}\n"]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { Nullable } from "../../../types";
|
|
2
|
+
import type { AudioEngineV2 } from "../audioEngineV2";
|
|
3
|
+
import type { AudioAnalyzerFFTSizeType, IAudioAnalyzerOptions } from "../subProperties/abstractAudioAnalyzer";
|
|
4
|
+
import { _AudioAnalyzerDefaults } from "../subProperties/abstractAudioAnalyzer";
|
|
5
|
+
import type { _AbstractAudioSubGraph } from "./abstractAudioSubGraph";
|
|
6
|
+
import { _AbstractAudioSubNode } from "./abstractAudioSubNode";
|
|
7
|
+
/** @internal */
|
|
8
|
+
export declare abstract class _AudioAnalyzerSubNode extends _AbstractAudioSubNode {
|
|
9
|
+
protected constructor(engine: AudioEngineV2);
|
|
10
|
+
abstract fftSize: AudioAnalyzerFFTSizeType;
|
|
11
|
+
abstract minDecibels: number;
|
|
12
|
+
abstract maxDecibels: number;
|
|
13
|
+
abstract smoothing: number;
|
|
14
|
+
abstract getByteFrequencyData(): Uint8Array;
|
|
15
|
+
abstract getFloatFrequencyData(): Float32Array;
|
|
16
|
+
/** @internal */
|
|
17
|
+
setOptions(options: Partial<IAudioAnalyzerOptions>): void;
|
|
18
|
+
}
|
|
19
|
+
/** @internal */
|
|
20
|
+
export declare function _GetAudioAnalyzerSubNode(subGraph: _AbstractAudioSubGraph): Nullable<_AudioAnalyzerSubNode>;
|
|
21
|
+
/** @internal */
|
|
22
|
+
export declare function _GetAudioAnalyzerProperty<K extends keyof typeof _AudioAnalyzerDefaults>(subGraph: _AbstractAudioSubGraph, property: K): (typeof _AudioAnalyzerDefaults)[K];
|
|
23
|
+
/** @internal */
|
|
24
|
+
export declare function _SetAudioAnalyzerProperty<K extends keyof typeof _AudioAnalyzerDefaults>(subGraph: _AbstractAudioSubGraph, property: K, value: _AudioAnalyzerSubNode[K]): void;
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { _AudioAnalyzerDefaults } from "../subProperties/abstractAudioAnalyzer.js";
|
|
2
|
+
import { _AbstractAudioSubNode } from "./abstractAudioSubNode.js";
|
|
3
|
+
/** @internal */
|
|
4
|
+
export class _AudioAnalyzerSubNode extends _AbstractAudioSubNode {
|
|
5
|
+
constructor(engine) {
|
|
6
|
+
super("Analyzer" /* AudioSubNode.ANALYZER */, engine);
|
|
7
|
+
}
|
|
8
|
+
/** @internal */
|
|
9
|
+
setOptions(options) {
|
|
10
|
+
this.fftSize = options.analyzerFFTSize ?? _AudioAnalyzerDefaults.fftSize;
|
|
11
|
+
this.minDecibels = options.analyzerMinDecibels ?? _AudioAnalyzerDefaults.minDecibels;
|
|
12
|
+
this.maxDecibels = options.analyzerMaxDecibels ?? _AudioAnalyzerDefaults.maxDecibels;
|
|
13
|
+
this.smoothing = options.analyzerSmoothing ?? _AudioAnalyzerDefaults.smoothing;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** @internal */
|
|
17
|
+
export function _GetAudioAnalyzerSubNode(subGraph) {
|
|
18
|
+
return subGraph.getSubNode("Analyzer" /* AudioSubNode.ANALYZER */);
|
|
19
|
+
}
|
|
20
|
+
/** @internal */
|
|
21
|
+
export function _GetAudioAnalyzerProperty(subGraph, property) {
|
|
22
|
+
return _GetAudioAnalyzerSubNode(subGraph)?.[property] ?? _AudioAnalyzerDefaults[property];
|
|
23
|
+
}
|
|
24
|
+
/** @internal */
|
|
25
|
+
export function _SetAudioAnalyzerProperty(subGraph, property, value) {
|
|
26
|
+
subGraph.callOnSubNode("Analyzer" /* AudioSubNode.ANALYZER */, (node) => {
|
|
27
|
+
node[property] = value;
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=audioAnalyzerSubNode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audioAnalyzerSubNode.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/abstractAudio/subNodes/audioAnalyzerSubNode.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAEhF,OAAO,EAAE,qBAAqB,EAAE,MAAM,wBAAwB,CAAC;AAG/D,gBAAgB;AAChB,MAAM,OAAgB,qBAAsB,SAAQ,qBAAqB;IACrE,YAAsB,MAAqB;QACvC,KAAK,yCAAwB,MAAM,CAAC,CAAC;IACzC,CAAC;IAUD,gBAAgB;IACT,UAAU,CAAC,OAAuC;QACrD,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,eAAe,IAAI,sBAAsB,CAAC,OAAO,CAAC;QACzE,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,mBAAmB,IAAI,sBAAsB,CAAC,WAAW,CAAC;QACrF,IAAI,CAAC,WAAW,GAAG,OAAO,CAAC,mBAAmB,IAAI,sBAAsB,CAAC,WAAW,CAAC;QACrF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC,iBAAiB,IAAI,sBAAsB,CAAC,SAAS,CAAC;IACnF,CAAC;CACJ;AAED,gBAAgB;AAChB,MAAM,UAAU,wBAAwB,CAAC,QAAgC;IACrE,OAAO,QAAQ,CAAC,UAAU,wCAA8C,CAAC;AAC7E,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,yBAAyB,CAAgD,QAAgC,EAAE,QAAW;IAClI,OAAO,wBAAwB,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,sBAAsB,CAAC,QAAQ,CAAC,CAAC;AAC9F,CAAC;AAED,gBAAgB;AAChB,MAAM,UAAU,yBAAyB,CAAgD,QAAgC,EAAE,QAAW,EAAE,KAA+B;IACnK,QAAQ,CAAC,aAAa,yCAA+C,CAAC,IAAI,EAAE,EAAE;QAC1E,IAAI,CAAC,QAAQ,CAAC,GAAG,KAAK,CAAC;IAC3B,CAAC,CAAC,CAAC;AACP,CAAC","sourcesContent":["import type { Nullable } from \"../../../types\";\nimport type { AudioEngineV2 } from \"../audioEngineV2\";\nimport type { AudioAnalyzerFFTSizeType, IAudioAnalyzerOptions } from \"../subProperties/abstractAudioAnalyzer\";\nimport { _AudioAnalyzerDefaults } from \"../subProperties/abstractAudioAnalyzer\";\nimport type { _AbstractAudioSubGraph } from \"./abstractAudioSubGraph\";\nimport { _AbstractAudioSubNode } from \"./abstractAudioSubNode\";\nimport { AudioSubNode } from \"./audioSubNode\";\n\n/** @internal */\nexport abstract class _AudioAnalyzerSubNode extends _AbstractAudioSubNode {\n protected constructor(engine: AudioEngineV2) {\n super(AudioSubNode.ANALYZER, engine);\n }\n\n public abstract fftSize: AudioAnalyzerFFTSizeType;\n public abstract minDecibels: number;\n public abstract maxDecibels: number;\n public abstract smoothing: number;\n\n public abstract getByteFrequencyData(): Uint8Array;\n public abstract getFloatFrequencyData(): Float32Array;\n\n /** @internal */\n public setOptions(options: Partial<IAudioAnalyzerOptions>): void {\n this.fftSize = options.analyzerFFTSize ?? _AudioAnalyzerDefaults.fftSize;\n this.minDecibels = options.analyzerMinDecibels ?? _AudioAnalyzerDefaults.minDecibels;\n this.maxDecibels = options.analyzerMaxDecibels ?? _AudioAnalyzerDefaults.maxDecibels;\n this.smoothing = options.analyzerSmoothing ?? _AudioAnalyzerDefaults.smoothing;\n }\n}\n\n/** @internal */\nexport function _GetAudioAnalyzerSubNode(subGraph: _AbstractAudioSubGraph): Nullable<_AudioAnalyzerSubNode> {\n return subGraph.getSubNode<_AudioAnalyzerSubNode>(AudioSubNode.ANALYZER);\n}\n\n/** @internal */\nexport function _GetAudioAnalyzerProperty<K extends keyof typeof _AudioAnalyzerDefaults>(subGraph: _AbstractAudioSubGraph, property: K): (typeof _AudioAnalyzerDefaults)[K] {\n return _GetAudioAnalyzerSubNode(subGraph)?.[property] ?? _AudioAnalyzerDefaults[property];\n}\n\n/** @internal */\nexport function _SetAudioAnalyzerProperty<K extends keyof typeof _AudioAnalyzerDefaults>(subGraph: _AbstractAudioSubGraph, property: K, value: _AudioAnalyzerSubNode[K]): void {\n subGraph.callOnSubNode<_AudioAnalyzerSubNode>(AudioSubNode.ANALYZER, (node) => {\n node[property] = value;\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioSubNode.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/abstractAudio/subNodes/audioSubNode.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAN,IAAkB,
|
|
1
|
+
{"version":3,"file":"audioSubNode.js","sourceRoot":"","sources":["../../../../../../dev/core/src/AudioV2/abstractAudio/subNodes/audioSubNode.ts"],"names":[],"mappings":"AAAA,gBAAgB;AAChB,MAAM,CAAN,IAAkB,YAKjB;AALD,WAAkB,YAAY;IAC1B,qCAAqB,CAAA;IACrB,iCAAiB,CAAA;IACjB,mCAAmB,CAAA;IACnB,iCAAiB,CAAA;AACrB,CAAC,EALiB,YAAY,KAAZ,YAAY,QAK7B","sourcesContent":["/** @internal */\nexport const enum AudioSubNode {\n ANALYZER = \"Analyzer\",\n STEREO = \"Stereo\",\n SPATIAL = \"Spatial\",\n VOLUME = \"Volume\",\n}\n"]}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { Quaternion, Vector3 } from "../../../Maths/math.vector";
|
|
2
|
+
import type { Node } from "../../../node";
|
|
2
3
|
import type { Nullable } from "../../../types";
|
|
4
|
+
import type { SpatialAudioAttachmentType } from "../../spatialAudioAttachmentType";
|
|
3
5
|
import type { AudioEngineV2 } from "../audioEngineV2";
|
|
4
6
|
import type { ISpatialAudioOptions } from "../subProperties/abstractSpatialAudio";
|
|
5
7
|
import { _SpatialAudioDefaults } from "../subProperties/abstractSpatialAudio";
|
|
@@ -7,6 +9,7 @@ import type { _AbstractAudioSubGraph } from "./abstractAudioSubGraph";
|
|
|
7
9
|
import { _AbstractAudioSubNode } from "./abstractAudioSubNode";
|
|
8
10
|
/** @internal */
|
|
9
11
|
export declare abstract class _SpatialAudioSubNode extends _AbstractAudioSubNode {
|
|
12
|
+
private _attacherComponent;
|
|
10
13
|
protected constructor(engine: AudioEngineV2);
|
|
11
14
|
abstract coneInnerAngle: number;
|
|
12
15
|
abstract coneOuterAngle: number;
|
|
@@ -21,7 +24,19 @@ export declare abstract class _SpatialAudioSubNode extends _AbstractAudioSubNode
|
|
|
21
24
|
abstract rotationQuaternion: Quaternion;
|
|
22
25
|
abstract inNode: AudioNode;
|
|
23
26
|
/** @internal */
|
|
27
|
+
get isAttached(): boolean;
|
|
28
|
+
/** @internal */
|
|
29
|
+
attach(sceneNode: Node, useBoundingBox: boolean, attachmentType: SpatialAudioAttachmentType): void;
|
|
30
|
+
/** @internal */
|
|
31
|
+
detach(): void;
|
|
32
|
+
/** @internal */
|
|
33
|
+
dispose(): void;
|
|
34
|
+
/** @internal */
|
|
24
35
|
setOptions(options: Partial<ISpatialAudioOptions>): void;
|
|
36
|
+
/** @internal */
|
|
37
|
+
update(): void;
|
|
38
|
+
abstract updatePosition(): void;
|
|
39
|
+
abstract updateRotation(): void;
|
|
25
40
|
}
|
|
26
41
|
/** @internal */
|
|
27
42
|
export declare function _GetSpatialAudioSubNode(subGraph: _AbstractAudioSubGraph): Nullable<_SpatialAudioSubNode>;
|
|
@@ -1,9 +1,33 @@
|
|
|
1
|
+
import { _SpatialAudioAttacherComponent } from "../components/spatialAudioAttacherComponent.js";
|
|
1
2
|
import { _SpatialAudioDefaults } from "../subProperties/abstractSpatialAudio.js";
|
|
2
3
|
import { _AbstractAudioSubNode } from "./abstractAudioSubNode.js";
|
|
3
4
|
/** @internal */
|
|
4
5
|
export class _SpatialAudioSubNode extends _AbstractAudioSubNode {
|
|
5
6
|
constructor(engine) {
|
|
6
7
|
super("Spatial" /* AudioSubNode.SPATIAL */, engine);
|
|
8
|
+
this._attacherComponent = null;
|
|
9
|
+
}
|
|
10
|
+
/** @internal */
|
|
11
|
+
get isAttached() {
|
|
12
|
+
return this._attacherComponent !== null && this._attacherComponent.isAttached;
|
|
13
|
+
}
|
|
14
|
+
/** @internal */
|
|
15
|
+
attach(sceneNode, useBoundingBox, attachmentType) {
|
|
16
|
+
this.detach();
|
|
17
|
+
if (!this._attacherComponent) {
|
|
18
|
+
this._attacherComponent = new _SpatialAudioAttacherComponent(this);
|
|
19
|
+
}
|
|
20
|
+
this._attacherComponent.attach(sceneNode, useBoundingBox, attachmentType);
|
|
21
|
+
}
|
|
22
|
+
/** @internal */
|
|
23
|
+
detach() {
|
|
24
|
+
this._attacherComponent?.detach();
|
|
25
|
+
}
|
|
26
|
+
/** @internal */
|
|
27
|
+
dispose() {
|
|
28
|
+
super.dispose();
|
|
29
|
+
this._attacherComponent?.dispose();
|
|
30
|
+
this._attacherComponent = null;
|
|
7
31
|
}
|
|
8
32
|
/** @internal */
|
|
9
33
|
setOptions(options) {
|
|
@@ -15,18 +39,29 @@ export class _SpatialAudioSubNode extends _AbstractAudioSubNode {
|
|
|
15
39
|
this.panningModel = options.spatialPanningModel ?? _SpatialAudioDefaults.panningModel;
|
|
16
40
|
this.referenceDistance = options.spatialReferenceDistance ?? _SpatialAudioDefaults.referenceDistance;
|
|
17
41
|
this.rolloffFactor = options.spatialRolloffFactor ?? _SpatialAudioDefaults.rolloffFactor;
|
|
18
|
-
if (options.spatialPosition
|
|
42
|
+
if (options.spatialPosition) {
|
|
19
43
|
this.position = options.spatialPosition.clone();
|
|
20
44
|
}
|
|
21
|
-
if (options.spatialRotationQuaternion
|
|
45
|
+
if (options.spatialRotationQuaternion) {
|
|
22
46
|
this.rotationQuaternion = options.spatialRotationQuaternion.clone();
|
|
23
47
|
}
|
|
24
|
-
else if (options.spatialRotation
|
|
48
|
+
else if (options.spatialRotation) {
|
|
25
49
|
this.rotation = options.spatialRotation.clone();
|
|
26
50
|
}
|
|
27
51
|
else {
|
|
28
52
|
this.rotationQuaternion = _SpatialAudioDefaults.rotationQuaternion.clone();
|
|
29
53
|
}
|
|
54
|
+
this.update();
|
|
55
|
+
}
|
|
56
|
+
/** @internal */
|
|
57
|
+
update() {
|
|
58
|
+
if (this.isAttached) {
|
|
59
|
+
this._attacherComponent?.update();
|
|
60
|
+
}
|
|
61
|
+
else {
|
|
62
|
+
this.updatePosition();
|
|
63
|
+
this.updateRotation();
|
|
64
|
+
}
|
|
30
65
|
}
|
|
31
66
|
}
|
|
32
67
|
/** @internal */
|