@osobh/reactar
Version:
AR Library for React Native and Expo
72 lines (71 loc) • 2.13 kB
TypeScript
import { Audio } from 'expo-av';
import { EventEmitter } from 'events';
import { Vector3 } from 'three';
export interface AudioSource {
id: string;
sound: Audio.Sound;
position: Vector3;
maxDistance?: number;
refDistance?: number;
rolloffFactor?: number;
}
export interface AudioOptions {
maxDistance?: number;
refDistance?: number;
rolloffFactor?: number;
loop?: boolean;
volume?: number;
}
export declare class AudioManager extends EventEmitter {
private audioSources;
private listenerPosition;
private isInitialized;
constructor();
/**
* Initializes the audio system
*/
initialize(): Promise<void>;
/**
* Loads and creates a spatial audio source
* @param id Unique identifier for the audio source
* @param uri URI of the audio file to load
* @param position Initial 3D position of the audio source
* @param options Audio options
*/
createAudioSource(id: string, uri: string, position: Vector3, options?: AudioOptions): Promise<void>;
/**
* Updates the position of an audio source
* @param id Audio source identifier
* @param position New position
*/
updateSourcePosition(id: string, position: Vector3): void;
/**
* Updates the listener's position (usually the camera/user position)
* @param position New listener position
*/
updateListenerPosition(position: Vector3): void;
/**
* Plays an audio source
* @param id Audio source identifier
*/
playSource(id: string): Promise<void>;
/**
* Stops an audio source
* @param id Audio source identifier
*/
stopSource(id: string): Promise<void>;
/**
* Removes an audio source and cleans up its resources
* @param id Audio source identifier
*/
removeSource(id: string): Promise<void>;
/**
* Updates the volume of an audio source based on its distance from the listener
* @param source Audio source to update
*/
private updateAudioSourceVolume;
/**
* Cleans up all audio resources
*/
cleanup(): Promise<void>;
}