UNPKG

arx-convert

Version:

Converts various Arx Fatalis formats to JSON or YAML and back

47 lines 1.88 kB
import { BinaryIO } from '../common/BinaryIO.js'; /** * @see https://github.com/arx/ArxLibertatis/blob/1.2.1/src/graphics/data/FastSceneFormat.h#L113 * @see https://github.com/arx/ArxLibertatis/blob/ArxFatalis-1.21/Sources/Include/EERIEPoly.h#L149 */ export var ArxAnchorFlags; (function (ArxAnchorFlags) { ArxAnchorFlags[ArxAnchorFlags["None"] = 0] = "None"; // GreenDraw = 1 << 0, // removed in Arx Libertatis, never used in files // ? = 1 << 1, // no info on this flag, was probably removed earlier by Arkane // ? = 1 << 2, // no info on this flag, was probably removed earlier by Arkane ArxAnchorFlags[ArxAnchorFlags["Blocked"] = 8] = "Blocked"; })(ArxAnchorFlags || (ArxAnchorFlags = {})); export class AnchorData { static readFrom(binary) { const data = { pos: binary.readVector3(), radius: binary.readFloat32(), height: binary.readFloat32(), numberOfLinkedAnchors: binary.readInt16(), isBlocked: false, }; const flags = binary.readInt16(); if ((flags & ArxAnchorFlags.Blocked) !== 0) { data.isBlocked = true; } return data; } static accumulateFrom(anchor) { const buffer = new ArrayBuffer(AnchorData.sizeOf()); const binary = new BinaryIO(buffer); binary.writeVector3(anchor.data.pos); binary.writeFloat32(anchor.data.radius); binary.writeFloat32(anchor.data.height); binary.writeInt16(anchor.linkedAnchors.length); let flags = 0; if (anchor.data.isBlocked) { flags = flags | ArxAnchorFlags.Blocked; } binary.writeInt16(flags); return buffer; } static sizeOf() { return BinaryIO.sizeOfVector3() + BinaryIO.sizeOfFloat32Array(2) + BinaryIO.sizeOfInt16Array(2); } } //# sourceMappingURL=AnchorData.js.map