UNPKG

mdx-m3-viewer

Version:

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

83 lines (68 loc) 1.68 kB
import GenericObject from './genericobject'; /** * An event object. */ export default class EventObject extends GenericObject { /** * */ constructor() { super(0x400); /** @member {number} */ this.globalSequenceId = -1; /** @member {Uint32Array} */ this.tracks = new Uint32Array(1); } /** * @param {BinaryStream} stream */ readMdx(stream) { super.readMdx(stream); stream.skip(4); // KEVT let count = stream.readUint32(); this.globalSequenceId = stream.readInt32(); this.tracks = stream.readUint32Array(count); } /** * @param {BinaryStream} stream */ writeMdx(stream) { super.writeMdx(stream); stream.write('KEVT'); stream.writeUint32(this.tracks.length); stream.writeInt32(this.globalSequenceId); stream.writeUint32Array(this.tracks); } /** * @param {TokenStream} stream */ readMdl(stream) { for (let token of super.readMdl(stream)) { if (token === 'EventTrack') { this.tracks = stream.readIntArray(new Uint32Array(stream.readInt())); } else { throw new Error(`Unknown token in EventObject: "${token}"`); } } } /** * @param {TokenStream} stream */ writeMdl(stream) { stream.startObjectBlock('EventObject', this.name); this.writeGenericHeader(stream); stream.startBlock('EventTrack', this.tracks.length); for (let track of this.tracks) { stream.writeFlag(track); } stream.endBlock(); this.writeGenericAnimations(stream); stream.endBlock(); } /** * @return {number} */ getByteLength() { return 12 + this.tracks.byteLength + super.getByteLength(); } }