arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
34 lines • 1.35 kB
JavaScript
import { BinaryIO } from '../common/BinaryIO.js';
import { Color } from '../common/Color.js';
import { concatArrayBuffers, times } from '../common/helpers.js';
import { Light } from './Light.js';
import { LightingHeader } from './LightingHeader.js';
import { LlfHeader } from './LlfHeader.js';
export class LLF {
static load(decompressedFile) {
const file = new BinaryIO(decompressedFile);
const { numberOfLights, ...header } = LlfHeader.readFrom(file);
const lights = times(() => {
return Light.readFrom(file);
}, numberOfLights);
const { numberOfColors } = LightingHeader.readFrom(file);
const colors = times(() => {
return Color.readFrom(file, 'bgra');
}, numberOfColors);
return {
header,
lights,
colors,
};
}
static save(json) {
const header = LlfHeader.accumulateFrom(json);
const lights = concatArrayBuffers(json.lights.map(Light.accumulateFrom));
const lightingHeader = LightingHeader.accumulateFrom(json.colors);
const colors = concatArrayBuffers(json.colors.map((color) => {
return Color.accumulateFrom(color, 'bgra');
}));
return concatArrayBuffers([header, lights, lightingHeader, colors]);
}
}
//# sourceMappingURL=LLF.js.map