arx-convert
Version:
Converts various Arx Fatalis formats to JSON or YAML and back
28 lines • 1.15 kB
JavaScript
import { BinaryIO } from '../common/BinaryIO.js';
import { concatArrayBuffers, times } from '../common/helpers.js';
import { Polygon } from './Polygon.js';
import { SceneInfo } from './SceneInfo.js';
export class Cell {
static readFrom(binary) {
const { numberOfPolygons, numberOfAnchors } = SceneInfo.readFrom(binary);
const data = {
polygons: times(() => {
return Polygon.readFrom(binary);
}, numberOfPolygons),
};
if (numberOfAnchors > 0) {
data.anchors = binary.readInt32Array(numberOfAnchors);
}
return data;
}
static accumulateFrom(cell) {
const anchors = cell.anchors ?? [];
const buffer = new ArrayBuffer(SceneInfo.sizeOf() + Polygon.sizeOf() * cell.polygons.length + BinaryIO.sizeOfInt32Array(anchors.length));
const binary = new BinaryIO(buffer);
binary.writeBuffer(SceneInfo.accumulateFrom(cell));
binary.writeBuffer(concatArrayBuffers(cell.polygons.map(Polygon.accumulateFrom)));
binary.writeInt32Array(anchors);
return buffer;
}
}
//# sourceMappingURL=Cell.js.map