UNPKG

arx-convert

Version:

Converts various Arx Fatalis formats to JSON or YAML and back

56 lines 2.19 kB
import { BinaryIO } from '../common/BinaryIO.js'; import { repeat } from '../common/helpers.js'; /** * These are not bitwise flags, they cannot be combined */ export var ArxZoneAndPathPointType; (function (ArxZoneAndPathPointType) { ArxZoneAndPathPointType[ArxZoneAndPathPointType["Standard"] = 0] = "Standard"; ArxZoneAndPathPointType[ArxZoneAndPathPointType["Bezier"] = 1] = "Bezier"; ArxZoneAndPathPointType[ArxZoneAndPathPointType["BezierControlPoint"] = 2] = "BezierControlPoint"; })(ArxZoneAndPathPointType || (ArxZoneAndPathPointType = {})); export class ZoneAndPathPoint { static readFrom(binary, position) { // TODO: what is r in rpos/rPosition? real? const rPosition = binary.readVector3(); const data = { position: { x: rPosition.x + position.x, y: rPosition.y + position.y, z: rPosition.z + position.z, }, type: binary.readInt32(), time: binary.readUint32(), }; binary.readFloat32Array(2); // fpad - ? binary.readInt32Array(2); // lpad - ? binary.readUint8Array(32); // cpad - ? return data; } static allocateFrom(point, position) { const buffer = new ArrayBuffer(ZoneAndPathPoint.sizeOf()); const binary = new BinaryIO(buffer); // TODO: what is r in rpos/rPosition? real? const rPosition = { x: point.position.x - position.x, y: point.position.y - position.y, z: point.position.z - position.z, }; binary.writeVector3(rPosition); binary.writeInt32(point.type); binary.writeUint32(point.time); binary.writeFloat32Array(repeat(0, 2)); binary.writeInt32Array(repeat(0, 2)); binary.writeUint8Array(repeat(0, 32)); return buffer; } static sizeOf() { return (BinaryIO.sizeOfVector3() + BinaryIO.sizeOfInt32() + BinaryIO.sizeOfUint32() + BinaryIO.sizeOfFloat32Array(2) + BinaryIO.sizeOfInt32Array(2) + BinaryIO.sizeOfUint8Array(32)); } } //# sourceMappingURL=ZoneAndPathPoint.js.map