/** * The SoundManager is used to load and play audio. It also applies system-wide settings like * global volume, suspend and resume. * * @category Sound */ export class SoundManager extends EventHandler { /** * The underlying AudioContext, lazy loaded in the 'context' property. * * @type {AudioContext} * @private */ private _context; AudioContext: any; _unlockHandlerFunc: any; _userSuspended: boolean; listener: Listener; _volume: number; /** * Sets the global volume for the manager. All {@link SoundInstance}s will scale their volume * with this volume. Valid between [0, 1]. * * @type {number} */ set volume(volume: number); /** * Gets the global volume for the manager. * * @type {number} */ get volume(): number; get suspended(): boolean; /** * Get the Web Audio API context. * * @type {AudioContext} * @ignore */ get context(): AudioContext; suspend(): void; resume(): void; destroy(): void; /** * Create a new {@link Channel} and begin playback of the sound. * * @param {import('./sound.js').Sound} sound - The Sound object to play. * @param {object} [options] - Optional options object. * @param {number} [options.volume] - The volume to playback at, between 0 and 1. * @param {boolean} [options.loop] - Whether to loop the sound when it reaches the end. * @returns {Channel} The channel playing the sound. * @private */ private playSound; /** * Create a new {@link Channel3d} and begin playback of the sound at the position specified. * * @param {import('./sound.js').Sound} sound - The Sound object to play. * @param {import('../../core/math/vec3.js').Vec3} position - The position of the sound in 3D space. * @param {object} options - Optional options object. * @param {number} [options.volume] - The volume to playback at, between 0 and 1. * @param {boolean} [options.loop] - Whether to loop the sound when it reaches the end. * @returns {Channel3d} The 3D channel playing the sound. * @private */ private playSound3d; _resume(): void; _suspend(): void; _unlockHandler(): void; _registerUnlockListeners(): void; _removeUnlockListeners(): void; } import { EventHandler } from '../../core/event-handler.js'; import { Listener } from './listener.js';