UNPKG

mdx-m3-viewer

Version:

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

78 lines (73 loc) 2.33 kB
import BinaryStream from '../../../common/binarystream'; /** * A sound. */ export default class Sound { name: string = ''; file: string = ''; eaxEffect: string = ''; flags: number = 0; fadeInRate: number = 0; fadeOutRate: number = 0; volume: number = 0; pitch: number = 0; u1: number = 0; u2: number = 0; channel: number = 0; minDistance: number = 0; maxDistance: number = 0; distanceCutoff: number = 0; u3: number = 0; u4: number = 0; u5: number = 0; u6: number = 0; u7: number = 0; u8: number = 0; load(stream: BinaryStream) { this.name = stream.readUntilNull(); this.file = stream.readUntilNull(); this.eaxEffect = stream.readUntilNull(); this.flags = stream.readUint32(); this.fadeInRate = stream.readInt32(); this.fadeOutRate = stream.readInt32(); this.volume = stream.readInt32(); this.pitch = stream.readFloat32(); this.u1 = stream.readFloat32(); this.u2 = stream.readInt32(); this.channel = stream.readInt32(); this.minDistance = stream.readFloat32(); this.maxDistance = stream.readFloat32(); this.distanceCutoff = stream.readFloat32(); this.u3 = stream.readFloat32(); this.u4 = stream.readFloat32(); this.u5 = stream.readInt32(); this.u6 = stream.readFloat32(); this.u7 = stream.readFloat32(); this.u8 = stream.readFloat32(); } save(stream: BinaryStream) { stream.write(`${this.name}\0`); stream.write(`${this.file}\0`); stream.write(`${this.eaxEffect}\0`); stream.writeUint32(this.flags); stream.writeUint32(this.fadeInRate); stream.writeUint32(this.fadeOutRate); stream.writeUint32(this.volume); stream.writeFloat32(this.pitch); stream.writeFloat32(this.u1); stream.writeInt32(this.u2); stream.writeInt32(this.channel); stream.writeFloat32(this.minDistance); stream.writeFloat32(this.maxDistance); stream.writeFloat32(this.distanceCutoff); stream.writeFloat32(this.u3); stream.writeFloat32(this.u4); stream.writeInt32(this.u5); stream.writeFloat32(this.u6); stream.writeFloat32(this.u7); stream.writeFloat32(this.u8); } getByteLength() { return 71 + this.name.length + this.file.length + this.eaxEffect.length; } }