@@ -3,8 +3,8 @@ import * as THREE from "three";
33
44// Import Internal Dependencies
55import {
6- type World ,
7- Assets
6+ AssetLoader ,
7+ type World
88} from "../systems/index.ts" ;
99import {
1010 type AudioListenerAdapter
@@ -18,6 +18,16 @@ import {
1818const kDefaultVolume = 1 ;
1919const kDefaultLoop = false ;
2020
21+ export const AudioAssetLoader = new AssetLoader < AudioBuffer > ( {
22+ type : "audio" ,
23+ extensions : [ ".mp3" , ".ogg" , ".wav" , ".aac" , ".flac" ] ,
24+ load : async ( asset , context ) => {
25+ const loader = new THREE . AudioLoader ( context . manager ) ;
26+
27+ return loader . loadAsync ( asset . toString ( ) ) ;
28+ }
29+ } ) ;
30+
2131export type AudioManager = {
2232 loadAudio : ( url : string , options ?: AudioLoadingOptions ) => Promise < THREE . Audio > ;
2333 loadPositionalAudio : ( url : string , options ?: AudioLoadingOptions ) => Promise < THREE . PositionalAudio > ;
@@ -54,17 +64,7 @@ export class GlobalAudioManager implements AudioManager {
5464 listener : world . audio . listener
5565 } ) ;
5666
57- Assets . registry . loader (
58- {
59- extensions : [ ".mp3" , ".ogg" , ".wav" , ".aac" , ".flac" ] ,
60- type : "audio"
61- } ,
62- async ( asset , context ) => {
63- const loader = new THREE . AudioLoader ( context . manager ) ;
64-
65- return loader . loadAsync ( asset . toString ( ) ) ;
66- }
67- ) ;
67+ world . assetManager . register ( AudioAssetLoader ) ;
6868
6969 return audioManager ;
7070 }
0 commit comments