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