UNPKG

arx-convert

Version:

Converts various Arx Fatalis formats to JSON or YAML and back

28 lines 1.15 kB
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