mdx-m3-viewer
Version:
A browser WebGL model viewer. Mainly focused on models of the games Warcraft 3 and Starcraft 2.
37 lines (28 loc) • 849 B
text/typescript
import BinaryStream from '../../common/binarystream';
import IndexEntry from './indexentry';
import Md34 from './md34';
import ModelHeader from './modelheader';
/**
* A model.
*/
export default class Model {
index: IndexEntry[] = [];
model: ModelHeader | null = null;
load(src: ArrayBuffer) {
let stream = new BinaryStream(src);
let header = new Md34();
header.load(stream, 11, this.index);
if (header.tag !== 'MD34') {
throw new Error('WrongMagicNumber');
}
stream.seek(header.offset);
// Read the index entries
for (let i = 0, l = header.entries; i < l; i++) {
this.index[i] = new IndexEntry(stream, this.index);
}
let modelEntries = this.index[header.model.id].entries;
if (modelEntries) {
this.model = modelEntries[0];
}
}
}