UNPKG

mdx-m3-viewer

Version:

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

64 lines (56 loc) 1.58 kB
/** * A SLK table file. */ export default class SlkFile { /** * @param {?string} buffer */ constructor(buffer) { /** @member {Array<Array<string>>} */ this.rows = []; if (buffer) { this.load(buffer); } } /** * @param {string} buffer */ load(buffer) { if (!buffer.startsWith('ID')) { throw new Error('WrongMagicNumber'); } let rows = this.rows; let x = 0; let y = 0; for (let line of buffer.split('\n')) { // The B command is supposed to define the total number of columns and rows, however in UbetSplatData.slk it gives wrong information // Therefore, just ignore it, since JavaScript arrays grow as they want either way if (line[0] !== 'B') { for (let token of line.split(';')) { let op = token[0]; let valueString = token.substring(1).trim(); let value; if (op === 'X') { x = parseInt(valueString, 10) - 1; } else if (op === 'Y') { y = parseInt(valueString, 10) - 1; } else if (op === 'K') { if (!rows[y]) { rows[y] = []; } if (valueString[0] === '"') { value = valueString.substring(1, valueString.length - 1); } else if (valueString === 'TRUE') { value = true; } else if (valueString === 'FALSE') { value = false; } else { value = parseFloat(valueString); } rows[y][x] = value; } } } } } }