UNPKG

@threlte/extras

Version:

Utilities, abstractions and plugins for your Threlte apps

31 lines (30 loc) 1.04 kB
import { useThrelteUserContext } from '@threlte/core'; import { SvelteMap } from 'svelte/reactivity'; const audioListeners = new SvelteMap(); const audioCtx = { audioListeners, addAudioListener: (listener, id = 'default') => { if (audioListeners.has(id)) { console.warn(`An AudioListener with the id "${id}" has already been added, aborting.`); return; } audioListeners.set(id, listener); }, removeAudioListener: (id = 'default') => { if (!audioListeners.has(id)) { console.warn(`No AudioListener with the id "${id}" found, aborting.`); return; } audioListeners.delete(id); }, getAudioListener: (id = 'default') => { if (!audioListeners.has(id)) { console.warn(`No AudioListener with the id "${id}" found, aborting.`); return; } return audioListeners.get(id); } }; export function useThrelteAudio() { return useThrelteUserContext('threlte-audio', audioCtx); }