arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
35 lines • 1.34 kB
JavaScript
import { BinaryIO } from '../common/BinaryIO.js';
import { TEA_VERSION_OLD } from './constants.js';
export class TeaHeader {
static readFrom(binary) {
binary.readString(20); // identifier - always "Theo Animation File"
return {
version: binary.readUint32(),
name: binary.readString(256),
totalNumberOfFrames: binary.readInt32(),
numberOfGroups: binary.readInt32(),
numberOfKeyFrames: binary.readInt32(),
};
}
static accumulateFrom(json) {
const buffer = new ArrayBuffer(TeaHeader.sizeOf());
const binary = new BinaryIO(buffer);
binary.writeString('Theo Animation File', 20);
binary.writeUint32(TEA_VERSION_OLD);
binary.writeString(json.header.name, 256);
binary.writeInt32(json.header.totalNumberOfFrames);
if (json.keyframes.length === 0) {
binary.writeInt32(0);
binary.writeInt32(0);
}
else {
binary.writeInt32(json.keyframes[0].groups.length);
binary.writeInt32(json.keyframes.length);
}
return buffer;
}
static sizeOf() {
return (BinaryIO.sizeOfString(20) + BinaryIO.sizeOfUint32() + BinaryIO.sizeOfString(256) + BinaryIO.sizeOfInt32Array(3));
}
}
//# sourceMappingURL=TeaHeader.js.map