first commit
This commit is contained in:
66
web-app/node_modules/three/src/loaders/AudioLoader.js
generated
vendored
Normal file
66
web-app/node_modules/three/src/loaders/AudioLoader.js
generated
vendored
Normal file
@@ -0,0 +1,66 @@
|
||||
import { AudioContext } from '../audio/AudioContext.js';
|
||||
import { FileLoader } from './FileLoader.js';
|
||||
import { Loader } from './Loader.js';
|
||||
|
||||
class AudioLoader extends Loader {
|
||||
|
||||
constructor( manager ) {
|
||||
|
||||
super( manager );
|
||||
|
||||
}
|
||||
|
||||
load( url, onLoad, onProgress, onError ) {
|
||||
|
||||
const scope = this;
|
||||
|
||||
const loader = new FileLoader( this.manager );
|
||||
loader.setResponseType( 'arraybuffer' );
|
||||
loader.setPath( this.path );
|
||||
loader.setRequestHeader( this.requestHeader );
|
||||
loader.setWithCredentials( this.withCredentials );
|
||||
loader.load( url, function ( buffer ) {
|
||||
|
||||
try {
|
||||
|
||||
// Create a copy of the buffer. The `decodeAudioData` method
|
||||
// detaches the buffer when complete, preventing reuse.
|
||||
const bufferCopy = buffer.slice( 0 );
|
||||
|
||||
const context = AudioContext.getContext();
|
||||
context.decodeAudioData( bufferCopy, function ( audioBuffer ) {
|
||||
|
||||
onLoad( audioBuffer );
|
||||
|
||||
} ).catch( handleError );
|
||||
|
||||
} catch ( e ) {
|
||||
|
||||
handleError( e );
|
||||
|
||||
}
|
||||
|
||||
}, onProgress, onError );
|
||||
|
||||
function handleError( e ) {
|
||||
|
||||
if ( onError ) {
|
||||
|
||||
onError( e );
|
||||
|
||||
} else {
|
||||
|
||||
console.error( e );
|
||||
|
||||
}
|
||||
|
||||
scope.manager.itemError( url );
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
export { AudioLoader };
|
||||
Reference in New Issue
Block a user