UNPKG

mdx-m3-viewer

Version:

A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.

46 lines (38 loc) 1.57 kB
import Scene from '../../scene'; import EmittedObject from '../../emittedobject'; import EventObjectEmitterObject from './eventobjectemitterobject'; import MdxModelInstance from './modelinstance'; import EventObjectSndEmitter from './eventobjectsndemitter'; /** * An MDX spawned sound object. */ export default class EventObjectSnd extends EmittedObject { bind() { let emitter = <EventObjectSndEmitter>this.emitter; let instance = <MdxModelInstance>emitter.instance; let viewer = instance.model.viewer; let scene = <Scene>instance.scene; // Is audio enabled both viewer-wide and in this scene? if (viewer.enableAudio && scene.audioEnabled) { let emitterObject = <EventObjectEmitterObject>emitter.emitterObject; let node = instance.nodes[emitterObject.index]; let audioContext = <AudioContext>scene.audioContext; let decodedBuffers = emitterObject.decodedBuffers; let panner = audioContext.createPanner(); let source = audioContext.createBufferSource(); let location = node.worldLocation; // Panner settings. panner.setPosition(location[0], location[1], location[2]); panner.maxDistance = emitterObject.distanceCutoff; panner.refDistance = emitterObject.minDistance; panner.connect(audioContext.destination); // Source. source.buffer = decodedBuffers[(Math.random() * decodedBuffers.length) | 0]; source.connect(panner); // Make a sound. source.start(0); } } update(dt: number) { } }