arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
28 lines • 1.14 kB
JavaScript
import { BinaryIO } from '../common/BinaryIO.js';
import { concatArrayBuffers, times } from '../common/helpers.js';
import { KeyFrame } from './KeyFrame.js';
import { TeaHeader } from './TeaHeader.js';
import { TEA_VERSION_OLD } from './constants.js';
export class TEA {
static load(decompressedFile) {
const file = new BinaryIO(decompressedFile);
const { numberOfKeyFrames, numberOfGroups, version, ...header } = TeaHeader.readFrom(file);
if (version < TEA_VERSION_OLD) {
throw new Error(`Invalid TEA version ${version}`);
}
const data = {
$schema: 'https://arx-tools.github.io/schemas/tea.schema.json',
header,
keyframes: times(() => {
return KeyFrame.readFrom(file, version, numberOfGroups);
}, numberOfKeyFrames),
};
return data;
}
static save(json) {
const header = TeaHeader.accumulateFrom(json);
const keyframes = concatArrayBuffers(json.keyframes.map(KeyFrame.accumulateFrom));
return concatArrayBuffers([header, keyframes]);
}
}
//# sourceMappingURL=TEA.js.map